본문 바로가기
반응형

전체 글116

[독서]도메인 주도 개발 시작하기 요즘 부쩍 독서에 취미 붙이는 것이 삶을 살아가는데 있어 중요하다는 생각을 했습니다.그리고 IT 또는 회사 생활 등 여러 카테고리의 책을 읽는 것을 습관화 하려 마음 먹었습니다.어떤 책을 읽어볼까 고민하던 찰나에언제 사놓은지 기억도 가물가물한 "도메인 주도 개발 시작하기"를 발견했고주말에 무작정 카페에 가 읽었습니다. 여러 IT도서들과 마찬가지로 개발자로서 업무 경력이 있으면 읽기 수월한 것 같았습니다.특히 스프링 개발 경험이 있다면 이해가 쉽고놓치고 있었거나 실무에 도움되는 내용들을 되새김질 할 수 있었던 것 같습니다. 이번 포스팅에서는 "도메인 주도 개발 시작하기" 도서를 읽고 느낀점을 정리해봅니다.목차1. DDD(Domain Driven Design) 개념의 등장 DDD는 도메인 기반 디자인을 뜻합.. 2024. 5. 7.
Crontab OS별 사용 방법 정리 리눅스에서 crontab 표현식(* * * * * 등)은 OS 별 차이가 없지만설치 또는 시작 명령어는 일부 차이가 있습니다. 이번 포스팅에서는 crontab 사용방법을 정리합니다.목차1. 설치1-1. OS 확인cat /etc/*release*Ubuntu나 CentOS의 경우 위와 같은 명령어로 확인 할 수 있습니다.cat /etc/issue만약 안되면 위 커맨드로 해봅니다. 1-2. OS 별 설치# CentOSsudo yum update -ysudo yum install -y cronie# Ubuntusudo apt update -ysudo apt install -y cron  2. 편집# editcrontab -e# listcrontab -l*      *      *      *      *.. 2024. 5. 7.
자주 쓰는 DB Command와 Query 해당 포스팅에서는 현업에서 자주 사용하는 DB 커맨드 및 쿼리를 정리합니다.DB는 Mysql기준입니다. 보통 개발 DB나 로컬 DB에서 실행하겠지만...그게 아니라면 주의해서 실행하도록 합시다.목차1. 사용자 생성 및 권한 설정-- 사용자 계정 생성CREATE USER 'my_name'@'%' identified WITH mysql_native_password BY 'my_password';-- 특정 Database에 대한 모든 권한 지급GRANT ALL PRIVILEGES ON dbname.* TO 'my_name'@'%';-- Read 권한만 지급GRANT select ON dbname.* TO 'my_name'@'%';-- CRUD 권한 지급GRANT select, insert, update, d.. 2024. 5. 3.
[독서] 대규모 서비스를 지탱하는 기술 이번 포스팅에서는 "웹 개발자를 위한 대규모 서비스를 지탱하는 기술"을 읽은 후기를 작성하고자 합니다. 웹 개발자로 근 10년 근속했지만, 대규모 서비스 개발에 참여한 적 있냐고 물어본다면 자신있게 말할 수 있는 경험이 없습니다. 사실 그런 경험은 제가 선택하기 어려운 부분이기도 했습니다. 직접 경험이 아닌 책을 통한 간접 경험도 나름의 가치가 있을 거라고 생각해서 이 책을 읽게 되었습니다. 책에서 얻은 경험을 언젠가 써먹을 일이 있지도 않을까하여...😯 목차 1. 얻게 된 깨알 지식 이 책은 대규모 서비스에 필요한 깨알 지식이 포함되어 있습니다. 탐색 속도 측면에서 Memory는 Disk에 비해 10만~100만배 이상 빠르다. SSD는 물리적 회전의 HDD보다 훨씬 탐색이 빠르다. 부하에는 크게 CPU.. 2024. 4. 13.
Kubernetes ConfigMap with Springboot 현업에서 Kubernetes 환경에 서버를 띄운다면 Configuration의 외부화는 필수적입니다. 당장에 생각나는건 아래와 같은 측면에서 유리하다고 볼 수 있을 것 같습니다. 민감 정보에 대한 보안 유지 환경마다 다른 변수와 애플리케이션 코드 디커플링 빠른 로컬 환경 구성 이번 포스팅에서는 쿠버네티스의 ConfigMap을 활용하여 애플리케이션의 환경변수를 외부화 하는 방법을 정리합니다. 목차 1. 기본 사용법 # configmap.yml apiVersion: v1 kind: ConfigMap metadata: name: api-server-config data: DATASOURCE_USERNAME: "root" DATASOURCE_PASSWORD: "1234" 먼저 ConfigMap은 위와 같이 구성.. 2024. 4. 10.
Telepresence 사용해보기 Telepresence는 MSA구조의 프로젝트에서 애플리케이션을 로컬에서 개발하기 위한 도구입니다. 개발자들이 Kubernetes cluster에서 서비스를 로컬 컴퓨터에서 실행하여 디버깅 및 테스트를 쉽게 할 수 있게 합니다. 즉, Cluster내에서만 접근 가능한 마이크로 서비스들을 로컬에서 쉽게 접근 할 수 있습니다. 이번 포스팅에서는 Telepresence로 로컬에 설치된 Kubernetes Cluster(Minikube) 연결해보겠습니다. 목차 1. Telepresence 설치 설치는 공식 홈페이지에 있는 문서를 참고하면 됩니다. 저는 Mac(M2) 랩탑이라서 아래와 같이 설치해줬습니다. # 다운로드 ~ sudo curl -fL https://app.getambassador.io/downloa.. 2024. 4. 3.
Kubernetes CronJob 실행 해보기 CronJob은 특정 잡을 주기적으로 실행 시킬 때 사용합니다. 주기적으로 파드를 띄워 프로그램을 실행/종료를 반복합니다. 이번 포스팅에서는 간단한 Cronjob을 실행해봅니다. 목차 1. cronjob.yml 작성 apiVersion: batch/v1 kind: CronJob metadata: name: hello spec: schedule: "* * * * *" jobTemplate: spec: template: spec: containers: - name: hello image: busybox args: - /bin/sh - -c - date; echo Hello Wolrd! restartPolicy: OnFailure 위 크론잡은 "* * * * *" 형식의 크론표현식을 사용합니다. # ┌───.. 2024. 3. 30.
Kubernetes HPA 설정하기 HPA는 Horizontal Pod Autoscaler를 뜻합니다. 워크로드에 따라 파드의 수평 확장/축소을 담당합니다. 최소 파드 수와 최대 파드 수를 설정하고, CPU 및 메모리의 사용량을 디플로이먼트에 기입하여야 합니다. 이번 포스팅에서는 간단한 예시를 통해 HPA 설정 방법을 정리합니다. 목차 1. HPA.yml 작성 apiVersion: autoscaling/v2 kind: HorizontalPodAutoscaler metadata: name: api-server spec: scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: api-server minReplicas: 1 maxReplicas: 2 metrics: - type: Resourc.. 2024. 3. 30.
Docker Image를 Minikube 로드하기 Docker Image를 Minikube로 로드 하는 과정에서 아래 에러가 발견됬습니다. ~ minikube image load api-exam:0.0.1 ❌ Exiting due to GUEST_IMAGE_LOAD: Failed to load image: save to dir: caching images: caching image "/Users/myuserid/.minikube/cache/images/arm64/api-exam_0.0.1": write: unable to calculate manifest: blob sha256:00fd5b12683afed295344689d9cd313043ecd10a660da04f9c48484e10095a09 not found GUEST_IMAGE_LOAD: Failed.. 2024. 3. 24.
ArgoCD를 통해서 Application 배포 지난번 포스팅에서 ArgoCD를 구축하는 방법을 정리했습니다. 이어서 Application을 만들고 Git Ops 워크플로우를 적용해봅시다. 1. Git Ops 워크플로우란 GitOps 워크플로우란 Git Repository를 통해 Application 배포 및 관리를 수행하는 것을 뜻합니다. Application의 상태와 구성이 Git 저장소에 정의되어있으며, 변경사항이 Commit 되면 ArgoCD를 통해서 Application 배포가 이뤄지게 됩니다. 위와 같은 워크플로우 적용을 위해서는 Git Repository에 저장될 정의가 중요할 것입니다. 여기서 kustomize라는 쿠버네티스의 오브젝트 선언형 관리 방법을 적용해 볼 수 있습니다. 2. Kustomize로 Application 정의 여기.. 2024. 3. 24.
Springbatch에서 메타테이블 없이 실행(Springbatch 5) 외부로부터 대량의 데이터를 가져와 주기적으로 가공 및 저장하는 기능 개발이 필요했습니다. 이에 Springbatch를 사용해서 배치 프로그램을 작성 해보기로 했습니다. 다만, 문제가 있었는데요. 자주 실행 되는 만큼 메타 테이블에 데이터가 너무 많이 쌓인다는 것이었어요. 메타 테이블이란 Springbatch 프레임워크에서 작업의 상태를 추적하고 관리하기 위해 메타데이터를 저장하는 장소입니다. BATCH_JOB_INSTANCE, BATCH_JOB_EXECUTION, BATCH_STEP_EXECUTION ... 등으로 구성되어 있습니다. 기본적으로 Job을 실행하면 해당 테이블에 관련 데이터들이 자동으로 생성 및 저장됩니다. 메타테이블을 사용한다면 거기에 따른 장점이 있겠지만 현시점에서 중요도는 떨어져서 메.. 2024. 3. 19.
Kubernetes, ArgoCD 설치 해보기(with Minikube) ArgoCD는 쿠버네티스 클러스터에 쉽게 애플리케이션을 배포 할 수 있게 해주는 유용한 도구입니다. 저도 실무에서 사용하고 있는데요. 운영을 하고 있는건 아니고 개발자로서 사용자 입장입니다. ArgoCD가 없는 업무 환경은 상상하기 싫을 정도로 만족하며 쓰는 도구입니다.👍 아래와 같은 주요 특징이 있습니다. 사용자 친화적 UI 제공 Git repository와 연동 및 지속 배포(Continuous Delivery) 구성 손쉬운 쿠버네티스 CLI(Command Line Interface) 사용 이번 포스팅에서는 ArgoCD를 설치하는 과정을 정리합니다. Docker, Minikube가 설치되어 있어야합니다. 1. 설치 먼저 설치하기 전에 Namespace를 하나 만들어 줍니다. ~ kubectl crea.. 2024. 3. 9.
반응형