일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 1차원 DP
- 2차원 dp
- 99클럽
- @BeforeAll
- @BeforeEach
- @Builder
- @Entity
- @GeneratedValue
- @GenericGenerator
- @NoargsConstructor
- @Query
- @Table
- @Transactional
- Actions
- Amazon EFS
- amazon fsx
- Android Studio
- ANSI SQL
- api gateway 설계
- api gateway 필터
- ApplicationEvent
- argocd
- assertThat
- async/await
- AVG
- AWS
- aws autoscaling
- aws eks
- AWS KMS
- aws vpc peering
- Today
- Total
목록전체 글 (262)
기록

들어가며개발을 하다 보면 환경 변수나 설정 파일에 비밀번호, API 키, DB 접속 정보 같은 민감한 데이터를 넣어야 할 때가 자주 있다. 초기에는 .env 파일에 그대로 두거나, Git에 커밋되지 않게만 조심하면 된다고 생각하기 쉽다.하지만 운영 환경에 배포하거나 여러 명이 협업하는 상황에서는 그 접근이 너무 위험할 수 있다. 나는 이 문제를 보다 안전하게 해결하기 위해 AWS의 Key Management Service(KMS) 를 활용해보기로 했다.이번 글에서는 다음 내용을 중점적으로 정리한다:AWS 콘솔에서 KMS 키를 생성하는 방법로컬에서 AWS CLI로 암복호화를 테스트하는 절차KMS 과금 정책과 주의할 점실습을 위한 단계부터 실제 운영 적용까지 이어질 수 있는 기반을 마련하는 것이 목표다.KM..
보호되어 있는 글입니다.
1. 이 글을 쓰게 된 이유Spring Boot에서는 흔히. -Dspring.profiles.active=xxx 옵션으로 프로필을 지정한다. 그런데 어느 날 ./gradlew test -Dspring.profiles.active=git 명령어를 실행했는데, git 프로필이 적용되지 않는 현상을 마주하게 되었다. 분명히 JVM 옵션을 줬는데 왜 안 될까? 이 의문을 해결하기 위해 콘솔 → Gradle → JVM → Spring Boot까지의 프로필 전달 구조를 깊게 파헤쳐 보았다. 결과적으로 테스트 시에는 JVM 옵션이 자동으로 적용되지 않는 구조라는 걸 알게 되었고, Gradle의 테스트 환경과 JVM 간의 동작 방식에 대한 이해가 중요함을 느꼈다.2. 기본 개념 정리2.1 JVM 옵션 -D란?JVM을 ..
시작하면서Kafka 기반의 오케스트레이터 마이크로서비스를 구성하는 과정에서, 애플리케이션이 정상적으로 빌드되고 실행되었음에도 불구하고 바로 종료되는 현상을 경험했다.에러 메시지도 없고, 로그상으로는 성공적으로 기동된 것처럼 보이기 때문에 처음엔 의아할 수 있다. 해당 현상을 통해 Spring Boot 애플리케이션이 어떤 조건에서 프로세스를 유지하며, Kafka 기반 서비스에서는 어떤 요소들이 필수적인지를 정리해본다.1. 문제 현상: 실행되지만 바로 종료되는 Spring Boot 애플리케이션멀티모듈 기반 프로젝트에서 오케스트레이터 역할을 수행하는 모듈(service-membership-orchestrator)을 실행했더니 다음과 같은 로그만 출력되고 앱이 종료된다:Started ServiceMembersh..

시작하면서이번 글에서는 K3s 마스터와 에이전트 노드 구성이 완료된 상태에서, 클러스터의 노드 및 파드 상태를 실시간으로 시각화하는 오픈소스 도구 kube-ops-view를 설치하고 활용하는 방법을 설명한다. Grafana를 사용할 수도 있지만, kube-ops-view는 경량이며 NodePort로 노출하기에 적합해 프리티어 환경에서 간편하게 운영할 수 있는 대시보드 도구이다. 이전글K3s 기반 멀티 노드 클러스터 구축기 (1) - 컨트롤 플레인 자동화와 Helm 설치까지K3s 기반 멀티 노드 클러스터 구축기 (2) - dev 계정에서 워커 노드 연결하기목표kube-ops-view를 마스터 노드(K3s 서버)에서 설치한다.클러스터 전체 노드와 파드 상태를 실시간으로 시각화한다.외부에서 웹 브라우저로 접근..
시작하면서이번 글에서는 K3s 마스터 노드가 구성된 상태에서, dev 계정에 위치한 EC2 인스턴스를 워커 노드(Agent)로 연결하는 방법을 설명한다. 이 과정은 클러스터 확장과 cross-account 구조를 이해하는 데 매우 유용하며, 프리티어 환경에서 실습하는 데 최적화되어 있다.이전글K3s 기반 멀티 노드 클러스터 구축기 (1) - 컨트롤 플레인 자동화와 Helm 설치까지목표dev 계정에서 EC2 인스턴스를 생성하고 swap, timezone 설정을 마친다.EC2를 K3s agent 모드로 실행하여 master 노드와 연결한다.kubectl get nodes 명령어로 클러스터 확장 여부를 확인한다.CloudFormation 템플릿 요약dev 계정에서는 다음 리소스를 CloudFormation ..
시작하면서로컬 개발 환경을 매번 수동으로 셋업하는 건 꽤 귀찮다. 특히 DB 사용자나 초기 데이터베이스 권한을 설정할 일이 반복되면 더 그렇다. 이럴 때 Docker Compose를 활용하면, 한 번의 설정으로 MySQL을 포함한 전체 환경을 자동으로 구성할 수 있다.이번 포스팅에서는 MySQL 컨테이너를 띄우면서 사용자 생성, 권한 부여, DB 초기 설정까지 자동화하는 방법을 정리한다.1. 디렉토리 구조my-dev-env/├── docker-compose.yml└── init.sqldocker-compose.yml: MySQL, Redis 등을 정의하는 파일init.sql: 컨테이너 초기 실행 시 실행될 SQL 스크립트2. docker-compose.yml 설정version: '3.8'services:..
시작하면서이번 글에서는 AWS 프리티어를 최대한 활용하여 K3s 기반 멀티노드 쿠버네티스 클러스터를 구성하는 과정을 소개한다. 이 글은 그 첫 번째로, Control 계정에서 마스터 노드를 초기화하고 Helm을 설치하는 내용을 포함한다.목표AWS Control 계정에 퍼블릭 서브넷과 EC2 인스턴스를 생성한다.EC2 인스턴스에서 K3s 마스터 노드를 초기화한다.Helm을 설치하여 이후 Helm Chart를 통한 배포 기반을 마련한다.swap 설정과 timezone 초기화를 포함한다.CloudFormation 템플릿 요약다음 리소스를 CloudFormation 템플릿을 사용하여 자동으로 생성한다:VPC (CIDR: 10.30.0.0/16)퍼블릭 서브넷 (CIDR: 10.30.1.0/24)인터넷 게이트웨이,..