인프라와 배포 자동화를 하면서 남기는 기록
배포할 때마다 끊기던 서비스를 무중단으로: Jenkins Rolling Deployment에서 내린 네 가지 결정
타겟 그룹 전체를 동시에 재시작하던 Jenkins 파이프라인을 서버별 순차 배포와 LB 제어로 바꾸며 내린 네 가지 결정과 아직 남은 한계
기존 JDK를 지우지 않고 JDK 11로 빌드하기: SDKMAN이 PATH를 가로채는 원리
로컬은 Corretto 21인데 빌드 테스트는 JDK 11이 필요할 때, SDKMAN이 기존 JDK를 건드리지 않고 PATH 우선순위만 가로채 세션 단위로 버전을 바꾸는 원리와 기존 JDK를 처리하는 세 가지 선택
쉘 스크립트 대신 Dockerode를 고른 이유: 멀티 테넌트 프로비저닝의 롤백과 동시성
docker run을 감싼 쉘로는 실패 원인도 롤백도 다룰 수 없어 Dockerode와 스키마 분리로 테넌트 생성을 자동화한 과정
Nginx Proxy Manager API로 Proxy Host 자동으로 붙이기
테넌트가 생길 때마다 손으로 하던 도메인 연결을 Nginx Proxy Manager API로 Proxy Host를 만들어 자동화했다.
프록시가 webserver를 찾지 못한 이유: Docker 네트워크 격리와 컨테이너명 DNS
NPM과 webserver가 서로 다른 Docker 네트워크에 있어 프록시가 끊긴 원인을 찾고, 네트워크 연결로 컨테이너 간 직접 통신을 복구한 기록
타 부서 제안서의 아키텍처 파트를 맡았다
타 부서 제안서의 아키텍처·구축 전략 파트를 며칠 만에 맡아, 모호한 요구사항을 AWS 구조도로 정리한 기록
SonarQube를 brew에서 Docker로 옮겼다
SonarQube Java 분석의 .class 요구 에러를 빌드로 풀고, brew 없이도 돌도록 서버와 Scanner를 Docker로 옮긴 기록
Ansible 첫 ping은 publickey에서 막혔다
첫 Ansible ping이 publickey 오류로 막혔고, 인벤토리에 키를 지정해 풀었다. 이어서 ad-hoc 명령과 첫 플레이북까지 돌렸다.
Multipass VM 두 대로 Ansible 실습 환경 만들기
맥북에 Multipass VM 두 대를 띄워 제어노드에 Ansible을 설치하고, 관리노드로 SSH 키 접속을 여는 과정을 정리했다.
Mac에서 컨테이너 IP로 접속이 안 되는 이유
Mac에서 컨테이너 IP가 보이는데도 접속되지 않는 건 Docker 네트워크가 Linux VM 안에만 있어서다.