이미지에서 사물을 분석해주는 모델(VGG16)을 사용해 API로 만들어보자
2024. 12. 11. 18:13
개발/Python
언젠가 AI를 해봐야지 생각하면서.. 미루고 있었다.perplexity(GPT) 와 채팅을 하면서 문득 사전에 학습된 모델을 알게되어VGG16 모델을 통해 이미지를 분석하는 테스트를 해보았다. VGG16먼저 VGG16 이란- 키보드, 동물, 연필 등의 정보를 1000개의 Class로 분류 가능- 3x3 커널을 사용- 모델 이미지 입력 크기 224x224 GPU (CUDA) 세팅CPU 를 사용했더니 너무 느려서 노트북에 내장되어 있는 그래픽카드를 셋업했다.필자의 그래픽 카드정보는 NVIDIA GeForce GTX 1650 Ti with Max-Q Design 이며,NVIDIA 사이트에서 Cuda를 지원하는지 체크하여 가능한 것임을 알았다. TensorFlow GPU 지원-소프트웨어 요구사항다음 NVIDIA..
[kubernetes] Storageclass Longhorn vs Kadalu
2024. 10. 12. 21:04
엔지니어링/Kubernetes
올해 1년간 on-prem 쿠버네티스를 운영 프로젝트를 진행하고 있다. 특별히 RKE(Rancher Kubernetes Engine)에서는 Longhorn 이라는 스토리지클래스를 사용하도록 가이드 하고 있어 Rancher Cluster 들은 모두 Longhorn을 사용하고 있다. 그리고 kubespray로 구축된 클러스터는 Kadalu 라는 스토리지클래스를 사용하고 있는데 두 스토리지클래스의 사용 후기를 짧게 나마 적어놓으려 한다.LonghornKadalu분산 블록 스토리지분산 파일 스토리지Longhorn롱혼은 분산 블록 스토리지 솔루션으로, Blob Storage를 제공한다.이로 인해 볼륨 기반의 고가용성과 복제 기능에 중점을 둘 수 있다.주요기능볼륨 복제 : 데이터를 여러 노드에 복제하여, 하나의 노..
Golang Test Standard
2024. 10. 10. 01:58
개발/기타
golang application 개발팀에서 테스트에 대한 가이드가 필요하다고 요청받아 찾아본 내용을 기술한다.좋은 사례로 Thanos Teams, Uber, Devocean, Buzzvil 의 내용을 참고하였다. Test Code의 표준화의 목적은 테이블 주도 테스트(Table-driven Test)로 개발자가 함수를 개발하며 여러 테스트 케이스를 수행해보며 중복을 제거할 수 있도록 표준을 정의한다. 먼저 테스트의 범위를 생각하면 아래 3가지의 항목이 존재한다.1. Data Access Layer - 데이터베이스와의 상호작용, SQL 쿼리 검증2. Business Layer - 비즈니스 로직이 의도한대로 작동하는가, 외부 의존성3. Presentation Layer - API Endpoint 또는 Co..
Elastic APM으로 VUE Application 모니터링
2024. 10. 9. 00:12
엔지니어링/Kubernetes
지난번 Go Application 모니터링을 Elastic APM으로 적용하였고, 그 애플리케이션과 연결된 VUE(frontend) 프로젝트도 간단히 개발해놨었다. 그래서 이번엔 VUE에 RUM Agent를 적용해보려한다. 먼저 적용된 화면이다. 리소스 다운로드 시간에 대한 것들이 벌써부터 내 눈을 즐겁게 해준다.ㅋㅋ작업 순서npm installrum agent js 파일을 다운 받아 public/js/ 안에 복사.환경변수 설정.main.js 에 javascript load 및 init 설정 NPM installnpm install @elastic/apm-rum --saveRum Agent JS 파일 다운아래 공식 github 에 들어가 Release 버전 확인 후 다운로드하자. GitHub - elas..
Elastic APM으로 Go Application 모니터링
2024. 10. 9. 00:00
엔지니어링/Kubernetes
진행하고 있는 프로젝트의 개발팀에서 Golang 기반 Backend API를 개발하는게 있어서 연초에 VUE, GO Application 샘플을 개발해놓았다. (매우 간단하게...) 이후 Application Performance Monitoring을 어떻게 할 것인가?에 대한 질문들로 Elastic APM을 사용해보기로 했다. 지금까지 java APM만을 셋업했었는데 golang은 어떻게 다른지 파악해보자.Java와의 차이java application은 javaagent 로 올리면 바이트코드를 읽어 자동으로 수집하지만 go application은 아니다. 그래도 http route, gorm 을 통해 어느정도 요청에 대한 그래프를 볼 수 있다.필자는 라우터 라이브러리로 고릴라, 데이터베이스는 gorm으..
Mariadb 백업, 복원하기(mariabackup)
2024. 10. 8. 22:24
데이터베이스
백업 종류mariadb 를 백업하는 방법은 논리적인 방법과 물리적인 방법이 있다.1. 논리적 백업(mysqldump)- SQL 형태의 방식- 모든 행을 스캔하여 테이블마다 insert 구문을 생성함- 복원 시 시간이 오래 걸림(20GB Data -> 50분 소요)2. 물리적 백업(mariabackup)- XtraBackup 방식으로 구현된 mariadb 전용 백업 툴(mariadb 10.3 이상부터 지원)- DB 데이터를 통째로 복사- 복사중 데이터 업데이트 발생 가능성으로 인해 주의해야 함 물리적 백업이 복구에 시간이 훨씬 빠르기 때문에 물리적 백업을 채택(20GB Data -> 4분 소요) 백업mariabackup 의 --backup 옵션을 활용한다.mariabackup --backup --no-lo..
Kubernetes Korea Community Day 2024 후기
2024. 9. 24. 23:31
엔지니어링/Kubernetes
24년 9월 24일 서울 백범김구기념관에서 Kubernetes Korea Community Day 2024를 개최하여 다녀왔다.각 세션 제목을 보고 너무 듣고 싶어서 기대가 많았고, 도전의 깊이를 넓혀 온 후기를 써본다.어떻게 알게되었나?직장동료가 페이스북 kubernetes korea group 에 수시로 들어가며 확인하던 중 발견하여 Join.참가방법?9월6일에 입장료 80,000원을 결제했고, 9월23일(행사 1일전) QR 코드가 문자로 날아왔다.오전 세션행사는 09시20분부터 QR을 찍어 네임카드를 발급받고, 10시부터 시작되었다.약 800명 정도가 참여하였고, 오전은 전체가 한 자리에서 Akamai, F5, CNAI 세션을 들었다. Kubernetes 10년, 그 너머의 항해: 살아남은 자의 인..
자바 Integer 비교 시 알아야 할 것
2023. 8. 12. 19:54
개발/JAVA
이번년도는 1월부터 개발 프로젝트로 매우 바빠서 블로그 쓸 시간이 없다ㅜ(핑계는..) 지난 주에 내부적으로 개발한 core 모듈에서 버그를 하나 찾았는데 내부적으로 만든 함수 중 객체 비교를 위한 메소드(isEquals)에서 Integer 타입에 대한 처리를 == 으로 했었던 부분이였다.당연히 객체간 데이터 비교에서는 .equals 를 사용해야 하는 것은 익히 알고 있었는데, == 으로 되어있었다는... 그럼 Integer 데이터간 비교는 왜 ==로 하면 안되는지 알아보자! 래퍼 클래스(Wrapper Class) 래퍼 클래스란 기본 타입의 데이터를 객체로 취급해야하는 경우 사용된다. - 기본 타입 데이터 타입 : byte,short,int,long,float,double,char,boolean (맨 앞이..
[CKA] Certified Kubernetes Administrator 자격 취득 후기
2023. 7. 8. 15:16
엔지니어링/Kubernetes
서론 쿠버네티스를 처음 접했던 것은 대학교 3학년(2019) 졸업작품 때이다. 당시에는 app, db, svc, ing 서비스를 올리고 프로메테우스/그라파나를 통해 클라우드 모니터링부분을 다뤘었다. 이 후 취업을 하고 본격적으로 쿠버네티스 프로젝트를 진행하게 된건 2021년3월부터인데 벌써 2년4개월의 시간이 흘렀고 CKA 자격증이라는 것을 알게 되었다.(회사에서도 클라우드 사업을 위해 어느정도 CKA자격을 가진 인력이 필요로 했음) 무튼, 시험을 본 자로써 어디에 초점을 두고 공부해야하는지 글을 남기려한다. 준비기간 실제 자격증 준비 시간은 약 2.5일 필자는 그동안 프로젝트에서 쿠버네티스를 경험해왔기에 짧은 시간 준비를 하고 시험을 쳤다. (실제 시험 수준은 너무 쉬웠다는거...+영어질문 해석에 오류..
[Android] Thread로 간단한 처리해보기
2023. 6. 20. 13:33
개발/JAVA
서론 갑작스럽게 회사 후임이 안드로이드를 물어봐서 간단히 테스트 글을 적어본다. 요구사항은 시크바(SeekBar)를 조절하면서 지속적으로 다른 곳에 데이터를 전송하는 내용이다. 시크바란? 시크바는 사용자가 범위 내에서 값을 선택할 수 있도록 도와주는 막대 형태의 뷰입니다. 음량/밝기 조절, 이미지 필터 적용, 동영상 재생 등 다양한 곳에 활용됩니다. 결과적으로 사용자가 바를 터치하고 있는 상태의 데이터를 지속적으로 전달해야한다. (뭐 데이터가 변경될때만 보내면 간단한데, 변경이 아닌 사용자가 누르고 있는 상태에 대한 값을 보내고싶다고 했다) 그래서 Thread를 이용해서 0.3초마다 실행할 수 있도록 구현하고자한다. MainActivity 시크바의 리스너함수 start에서 Thread를 실행, stop에..
[Springboot] @JsonProperty는 언제 써야 할까!
2023. 2. 22. 00:07
개발/Spring
이번에 개발하다가 DB 테이블 컬럼 중 숫자형태의 'A_CNT' 이런 앞에가 짧은 컬럼이 있어서, 늘 하던대로 RequestDTO 에 aCnt 로 작성하고 난 뒤 Post 방식으로 데이터를 보내봤더니 자꾸만 0 이 넘어오는게 아닌가???? @JsonProperty 이 때 @JsonProperty를 쓰면된다.(변수가 많다면 @JsonNaming 으로 통합해도 됨) @Getter @Setter @NoArgsConstructor @AllArgsConstructor public class Sample { @JsonProperty("a_cnt") private int aCnt; } 이렇게 하고 요청할 때 a_cnt 로 던지면 정상적으로 오게된다. 추가로 mybatis 에서 camelCase vo를 자동으로 변환해..
[ORACLE] MERGE INTO 조건의 데이터가 없는 경우 NULL Row 처리하기
2023. 2. 21. 23:13
데이터베이스
지난 달부터 차세대 MSA 개발 프로젝트에 개발자로 투입되서 그동안 너무 바빴다. FRONT-END로 넥사크로(NEXACRO)를 사용하고 있는데, GRID DataSet을 이용한 Multi Row 핸들링을 자주하게 되어 다중 처리에 대한 부분을 알아보았다. 그러던 중 merge into 를 사용한 update, insert를 구현하고 있었는데 조건절에서 데이터가 없다면 아무것도 실행하지 않는 현상이 생겼다. 조건, 업데이트문, 삽입문을 따로 돌려보면 전혀 에러가 없는 코드이고, 함께 돌려도 정상적인 코드로 멘탈이 슬슬 나가려할 때... 구글링을 하다가 내 상황과 같은 글을 찾게 되었다.(링크는 참고) 그 글에서는 오라클 9.2.0.4.0 버전에서는 되는데 9.2.0.3.0 버전에서 정상적으로 동작하지 않..
[AzureDevops] Repos / Pipeline 구축기
2023. 1. 5. 11:09
엔지니어링/CI-CD
AzureDevops Pipeline 관련 포스팅을 이전에 했었는데, 당시엔 파이프라인 스크립트 라이브러리 사용에 익숙치 않았기 때문에 파이프라인 작성과 실행을 중심으로 작성하였다면, 오늘은 azure Pipeline 구축 및 사용에 대해 더 초점을 맞춰 글을 쓰려한다. [AzureDevops] CI-CD Pipeline 구축 테스트 11월 3주간 Github Actions 과 AzureDevops 두 개의 CI-CD Pipeline 구축테스트를 진행하였고 Rest API 호출 방법까지 케이스를 정리해보았다. AzureDevops 도 GHES와 같이 Private 용도의 Server를 제공하며, 별도의 Self- flowlog.tistory.com Pipelines Azure Devops 에 접속하여 P..
[TmaxSoft] Jeus Webtob 도커 이미지 보안 개선
2023. 1. 5. 10:42
엔지니어링/CI-CD
이전에 포스팅한 글은 솔루션의 기본 세팅에서 내가 바로 적용할 수 있는 부분까지 확인해보았다. [TmaxSoft] Jeus Webtob 도커 이미지 연동하기 이번에 on-prem을 MSA 클라우드 전환 프로젝트 PoC를 준비하며 Tmaxsoft 사의 Jeus, Webtob를 컨테이너로 옮기는 작업이 필요했다. 필자는 다른 프로젝트를 진행해오면서 React, Vue, Angluer 등의 스크립트언 flowlog.tistory.com 더 나아가서 프로세스 실행 유저와 프로세스 기동 위치 등을 수정하려 Dockerfile을 손보았다. 그럼 함께 확인해보자. Webtob Dockerfile FROM tmaxsoftofficial/webtob:5.0.0.2.217.41.3.2 ####################..
[TmaxSoft] Jeus Webtob 도커 이미지 연동하기
2022. 12. 30. 12:24
엔지니어링/CI-CD
이번에 on-prem을 MSA 클라우드 전환 프로젝트 PoC를 준비하며 Tmaxsoft 사의 Jeus, Webtob를 컨테이너로 옮기는 작업이 필요했다. 필자는 다른 프로젝트를 진행해오면서 React, Vue, Angluer 등의 스크립트언어를 통해 front-end 와 back-end가 명확히 분리된 환경으로 컨테이너를 구성해 왔다. 기존의 Web->WAS 구조는 대학생 때 apache mod_jk를 통한 tomcat 연동을 해보았고, 이번기회에 Webtob와 Jeus 연동테스트를 진행하려한다. Base Image 먼저 Tmax에서 제공하는 이미지를 확인해보니 두 이미지 모두 tmaxsoftofficial 유저에 의해 2년전에 배포가 되어있었다. 2022.12.30 기준으로 가장 마지막 태그 정보는 아..