2025년 회고
·
회고록/회고
40여 곳의 기업에 지원했다. 두 번의 이직을 거치며 부족한 부분을 채웠고, 운으로 다가온 기회들을 알아보고 감사할 수 있었다. 다만 비즈니스에 영향을 주는 개발자가 되겠다는 욕심에 기본을 놓치는 아쉬운 판단도 했다. 반쯤은 성공적인 2025년이었다. 커리어2024년 6월에 진행된 이직은 설렘보다는 걱정이 앞섰다. 잘하는 사람들 사이에서 성과를 내야 한다는 부담에 주춤거렸지만, 주변의 격려와 무엇보다 대표님께 배우고 싶다는 욕심으로 내디딜 수 있었다. 돌이켜 보면 그 1년은 많은 걸 배운 시기였다. 끊임없이 ‘왜’를 물어야 했고, 괜찮을 거라는 방심이 곧 장애로 이어질 수 있음을 알게 됐다. 경쟁사의 유저 환경과 마케팅은 납득이 가지 않았지만, 내 생각을 비웃듯 그들이 하는 대로 따라 했더니 성과가 났다..
운영중인 AWS ECR를 Terraform으로 가져오기
·
Server/Infra
현재 상황 상황이미 EC2, RDS, VPC 등 대부분의 AWS 리소스를 사용하고 있었고, 현재 Terraform으로 하나씩 전환을 진행했습니다. 그중 한 번은 기록을 남기는 게 좋다는 생각이 들었고, 마지막으로 남아있는 ECR 저장소를 Infrastructure as Code로 전환하며 글을 남기기로 했습니다.Terraformer를 사용하지 않은 이유고민했던 포인트창업 단계의 스타트업이라 AWS Resource 개수가 많지 않았고, 모두 파악이 가능했습니다.예를 들어 ECR 저장소는 2개밖에 되지 않았습니다.AWS CLI 학습 기회라고 생각했습니다.1. Terraform 준비도구 설치 확인# AWS CLI 버전 확인~ aws --versionaws-cli/2.25.13 Python/3.12.9 Darw..
EC2환경에서의 무중단 배포, ubuntu nginx setup 기록
·
Server/Infra
EC2 환경에서 Nginx 무중단 배포 설정기존에 배포되어 있는 서비스들은 모두 EC2에 직접 jar 파일을 배포하는 방식으로, 중단 배포를 진행하고 있었습니다.이러한 문제를 해결하기 위해서 신규 서버부터는 Docker, Nginx를 활용하여 무중단 배포 환경을 구축하려고 합니다.ECS를 활용하면 더 편리하고, 가용성 있는 환경을 구축할 수 있겠지만, 스타트업의 특성상 MVP 서비스를 위해 ECS의 비용을 지출하는 것이 과한 소비라고 판단했습니다.추후에 다시 Nginx를 구축해야 하는 일이 발생할 수 있기 때문에, 이에 대한 글을 작성해놓으려고 합니다.ubuntu 환경Nginx 설치 및 서비스 활성화먼저 패키지 저장소 업데이트를 진행합니다.sudo apt-get update -qq이후, Nginx를 설치..
멱등성을 위한 테스트 (feat. 복합 유니크 설정)
·
Basic/Database
멱등성이란 동일한 연산을 여러 번 수행해도 결과가 달라지지 않는 성질을 의미합니다. 데이터 파이프라인에서 동일한 작업을 여러 번 수행해도 결과가 변하지 않는 멱등성(Idempotency)을 고려하며 개발을 진행해야 합니다. 예를 들어, API 호출이나 파일 처리로 데이터베이스에 데이터를 삽입할 때, 동일한 요청을 반복해도 중복 데이터가 추가되거나 기존 데이터가 변경되어서는 안 됩니다. 이를 위해 다양한 방식이 존재하지만, 이번에는 데이터베이스를 사용하여 여러 방법을 테스트하고 이에 따른 결과가 어떻게 되었는지 공유해보려고 합니다.1. 실험 환경 및 설계환경서버: Apple OS, M2 Pro, 16GB MemoryS/W 버전: Spring Boot, PostgreSQL, JdbcTemplate데이터 스키..
데이터베이스 복합 인덱스 설정에 대하여
·
Basic/Database
데이터베이스의 성능 최적화를 위하여, 가장 유용한 요소는 "인덱싱"으로 조회시 여러 컬럼을 조건으로 필터링 하기 때문에, 해당 조건에 해당하는 컬럼을 묶어 생성하는 "복합 인덱스"는 다중 조건 쿼리의 성능을 향상시킨다. 복합 인덱스란, 여러 컬럼을 인덱스에 저장하는 것을 뜻하는데, 이를 설정할 때 컬럼의 순서에 따라서도 성능에 유의미한 결과를 낳는다고 한다.`Leftmost Prefix Principle`라고 불리는, 왼쪽 순서에 들어가는 컬럼일수록 우선순위를 갖는다고 보면 될 것 같다.(A, B) 라는 열에 인덱스를 생성하면 인덱스는 먼저 A열 기준으로 정렬되고, A의 각 값 내에서는 B열 기준으로 정렬된다.하지만, B만 조건으로 검색하고 인덱스는 (A, B)를 진행할 경우 A를 건너 뛴 B에 대한 인..
Spring 트랜잭션 이벤트 처리와 트랜잭션 정합성, @TransactionalEventListener
·
Server/Spring&Spring Boot
들어가며이벤트 발행 시, 트랜잭션을 어떻게 처리할 것인가에 대해 고민하던 중 Spring에서 트랜잭션 처리 후에 이벤트를 작동시키는 마법 같은 클래스가 있다는 것을 알게 되었습니다.이에 해당 어노테이션이 무엇인지, 어떤 역할을 하는지 파악하려합니다.먼저, 이벤트가 무엇인지 정의 및 설명하며 시작하겠습니다.Event란?시스템에서 발생한 의미 있는 사건 또는 상태 변화를 뜻합니다.‘사용자 가입 완료’, ‘주문 생성’, ‘상품 재고 부족’등이 이벤트라고 불릴 수 있습니다. 즉, 이벤트는 특정 비즈니스 프로세스가 완료되거나 중요한 상태 변경이 일어났음을 나타냅니다. (예: '회원가입이라는 비즈니스 프로세스가 성공적으로 완료되었다'). 이벤트는 다음과 같은 정보들을 포함합니다.발생한 사실: 어떤 일이 발생했는가?..
N100 미니PC를 이용한 나만의 서버 구축기 - 3 / K3s 설치
·
Server/Infra
이번 단계에서는 K3s를 설치하고, 설정하는 시간을 가져보려고 합니다.K3s 클러스터 설치k3s-node1 (마스터 노드)에 K3s 설치ip a // 해당 명령어로 interface 확인...inet 192.168.0.200/24 brd 192.168.0.255 scope global enp6s18 // 끝부분 enp6s18 확인curl -sfL https://get.k3s.io | INSTALL_K3S_EXEC="server --write-kubeconfig-mode 644 --node-ip 192.168.0.200 --flannel-iface enp6s18" sh -위 명령어를 사용해서 K3s 서버를 설치합니다.sudo systemctl status k3s.service 위 명령어를 통해, k3s가 ..
N100 미니PC를 이용한 나만의 서버 구축기 - 2 / VPN 설정
·
Server/Infra
지난 글에 이어, 예고한 대로 VPN을 이용한 서버 접근까지 구성을 해보려고 합니다.먼저 우분투에 설정이 온전히 끝이 난 것이 아니라서, 이어서 진행해 보도록 할게요Ubuntu 추가 설정Qemu Guest Agent 설치 및 활성화sudo apt install qemu-guest-agent -ysudo systemctl enable --now qemu-guest-agent방화벽 임시 비활성화 (추후 ufw 상세 설정)sudo ufw disableIP 포워딩 활성화 및 브릿지 네트워크 설정 (컨테이너 네트워킹에 필요)echo "net.ipv4.ip_forward=1" | sudo tee -a /etc/sysctl.confecho "net.bridge.bridge-nf-call-iptables=1" | su..
코드플리
코드 플레이 리스트