안녕하세요.
|
백엔드 개발자 김정현입니다.

thumbnail
EC2에서 NAS로, 개인 서버 CI/CD 자동화

왜 EC2에서 NAS로 옮기게 되었는가? 사용 중인 NAS의 사용성이 DSM 7.2+ (Synology사의 DS920+ 기준) 부터 많이 달라졌다. 단순히 UI/UX만 변경된것이 아니라 (구)Docker 패키지에서 변경된 Container Manager 패키지는 다중 컨테이너 환경을 지원한다. EC2 t2.micro 인스턴스로 사용 중이던 서버에 올려둔 컨테이너 기반의 프로젝트 (LOTTERY 🍀)를 비용 효율적인 측면에서 마이그레이션하기 좋은 기회라 생각했다. EC2에서 NAS로 마이그레이션하는 과정과 Github Action + Docker Hub를 사용한 CI / CD 구축한 과정 또한 간략히 남겨 보려한다. 1. CI/CD 파이프라인 구성 전반적인 CI/CD는 Github Action + Docker Hub 를 활용하였으며, CI / CD 나누어 Github 저장소의 브런치를 활용해서 파이프라인을 구성하였다. (CI/CD 모두를 자동화는 아래와 같은 무중단 배포 전략까지 도…

March 31, 2025
Project
Nest CLI 뜯어보기 (nest start)

✍️ Today I Learned 파일을 작성할 때 습관처럼 큰 의심없이 아래와 같이 작성하곤한다. 에 별다른 설정을 안해두었다면 아래와 같을꺼라 npm run start:prod 명령과 같은 명령어이지만 습관(?)처럼 을 작성할 땐 “./dist/main.js”를 직접 실행시키고 있다. 프레임워크에서 기본으로 제공하는 nest start CLI 명령어 또한 서버를 구동시키는 명령어인데, 빌드된 .js 파일을 직접 실행시키는 것과 어떤 차이가 있을지 궁금해서 찾아본 결과를 간략히 남기려한다. 1. 눈에 띄는 차이점은? 사실 입사 초기에 로컬 환경에서 쓰던 파일이 그대로 운영 환경(심지어 —watch 옵션까지)까지 이어진 경험이 있어서 Nest CLI 명령어는 어떤 사이드 이펙트를 발생시키는지 이미 몸소 체험해본적이 있다. 🥲 간단히 같은 코드 베이스로 Nest CLI 명령어와 빌드된 .js 파일을 직접 실행한 환경으로 나누어서 컨테이너를 실행해보면 아래와 같이 눈으로도 확인이 가…

March 19, 2025
TIL
Docker Compose와 Traefik을 활용한 Blue/Green 배포 전략

✍️ Today I Learned 사내 인프라는 비교적 성능이 좋은 서버를 사용하고 있다. (수평적 확장이 힘들어서.. 🥲) 그렇기에 초기 인프라를 구성할 땐 리소스 부족에 허덕이진 않고있다. (다만, 요청이 급증할꺼라 예상될 때 수평적으로 확장하기는 쉽지 않다.) 이러한 바탕을 토대로 온프레미스 환경에서 Docker Compose로 Blue/Green 배포 전략을 구현한 과정을 간략히 포스팅으로 남기려한다. 1. Blue/Green 배포란? 간단히 소개하자면, 여러 무중단 배포 기법 중 하나이며 두 개의 독립적인 환경 Blue(구버전) 환경과 Green(신버전) 환경을 가지고 진행되는 배포 전략이다. blue/green 구버전이 운영되는 동안 신버전의 인스턴스를 구성한 후 로드밸런서를 통해 신버전으로 모든 트래픽을 일시에 전환하는 배포 방식이다. 신버전에 문제가 생기는 경우 로드밸런서의 라우팅만 구버전으로 변경해주면 손 쉽게 롤백이 가능한 장점 또한 있지만 그 만큼 리소스를 많이 …

March 16, 2025
TIL
프로그래머스 - 조이스틱 (JS)

✍️ Today I Learned 프로그래머스 조이스틱 알고리즘 문제 풀이 과정 중 그리디 알고리즘을 풀이하며 느낀점을 간단히 포스팅으로 남기려한다. 1. 문제 문제 설명 조이스틱으로 알파벳 이름을 완성하세요. 맨 처음엔 A로만 이루어져 있습니다. ex) 완성해야 하는 이름이 세 글자면 AAA, 네 글자면 AAAA 조이스틱을 각 방향으로 움직이면 아래와 같습니다. 예를 들어 아래의 방법으로 “JAZ”를 만들 수 있습니다. 만들고자 하는 이름 name이 매개변수로 주어질 때, 이름에 대해 조이스틱 조작 횟수의 최솟값을 return 하도록 solution 함수를 만드세요. 제한사항 name은 알파벳 대문자로만 이루어져 있습니다. name의 길이는 1 이상 20 이하입니다. 입출력 예 name return “JEROEN” 56 “JAN” 23 2. 풀이 위아래(▲, ▼)로 조이스틱을 조작하는 경우와 좌우(◀, ▶)로 조작하는 경우를 각각 계산해서 합산하는 방식으로 구현하였다. 위아래로 조…

March 13, 2025
TIL