주요 프로젝트
공공 G사 온프레미스 → NCP 클라우드 마이그레이션 & 컨테이너화
2025년 10월 - 2025년 12월 (예정) | Naver Cloud Platform
온프레미스 환경을 NCP 컨테이너 환경으로 마이그레이션하고 CI/CD 파이프라인 구축
프로젝트 규모
- 서비스: 6개 (Java Spring 1.8, PHP-FPM 8.3)
- 서버: Web/WAS/DB 각 2대 HA 구성 × 6개 사이트 = 18대 + GitLab, Jenkins, ELK, Zabbix, Matomo 등 솔루션 서버
- 아키텍처: Nginx - WAS - MariaDB 3티어 컨테이너 구조
- 일정: 10월 KT Cloud 테스트 환경 구축 → 11월 NCP 본격 마이그레이션 → 12월 중순 기관 최종 발표
담당 역할 (95% 단독 수행)
1. 인프라 설계 및 구축
- NCP 리소스 설계 및 구축 (Server, Load Balancer, ACG, VPC)
- GitLab + GitLab Container Registry 구축 및 리포지토리 관리
- Jenkins 구축 및 CI/CD 파이프라인 설계
- SVN → Git 형상 관리 체계 전환
2. 컨테이너화 및 CI/CD 구현
- PHP-FPM 8.3, Spring Java 1.8 애플리케이션 Dockerfile 작성
- docker-compose 기반 멀티 컨테이너 환경 구성
- GitLab Webhook 기반 자동 CI/CD 파이프라인 구축
- Main 브랜치 Protected 설정
- Push 트리거 → CI (소스 빌드 → 이미지 빌드 → Registry 푸시) → CD (자동 배포)
- GitLab Container Registry를 활용한 이미지 버전 관리
3. 자동화
- Ansible Playbook을 통한 서버 초기 설정 자동화
- sar, logrotate 설정
- Docker 설치 및 daemon.json 관리
- /etc/hosts 파일 관리
기술적 챌린지
1. MTU 불일치로 인한 간헐적 네트워크 타임아웃
- 문제: 아무 패턴 없이 간헐적으로 사이트 타임아웃 발생 (서버 리소스는 정상)
- 원인: 호스트(NCP MTU 8590) vs 컨테이너(기본 MTU 1500) 불일치로 큰 패킷 손실
- 해결: Docker daemon.json 및 docker-compose에서 MTU 8950으로 통일
- 상세: 컨테이너 환경에서 MTU 불일치로 인한 네트워크 타임아웃 이슈 Troubleshooting
2. GitLab Container Registry 이미지 푸시 실패
- 문제: 사설 IP로 Registry 접근 시 푸시 중단 (GitLab 웹콘솔은 공인 IP 사용)
- 원인: GitLab이 내부적으로 공인 IP로 redirect하면서 연결 끊김
- 해결: 도메인 기반 접근으로 전환
- DNS A 레코드: 도메인 → 공인 IP
- 이미지 푸시 서버 /etc/hosts: 도메인 → 사설 IP
- 불필요한 공인 IP 트래픽 절감 (이미지당 1GB+ 절약)
성능 최적화
웹 애플리케이션 응답 시간 최적화
- 개선 전: 평균 3초 이상
- 개선 후: 평균 150ms
- 개선율: 20배 성능 향상
최적화 작업:
- Nginx gzip 압축 설정 (4096+ 파일 대상)
- Nginx keepalive 설정
- MariaDB 인덱스 추가 (개발팀 협업)
- WAS/DB connection pool 및 buffer 튜닝
- hey, jmeter 부하 테스트 기반 튜닝 (CPU, Memory, Connection 모니터링)
사용 기술
- Cloud: Naver Cloud Platform (Server, Load Balancer, ACG, VPC)
- Container: Docker, docker-compose
- CI/CD: GitLab (SCM, Container Registry, Webhook), Jenkins (Pipeline)
- Automation: Ansible
- Monitoring: ELK, Zabbix, Matomo
- Load Testing: hey, jmeter
관련 포스트:
- 컨테이너 환경에서 Jenkins의 Java CICD 파이프라인 구축하기
- 컨테이너 환경에서 Jenkins의 PHP CICD 파이프라인 구축하기
- 컨테이너 환경에서 MTU 불일치로 인한 네트워크 타임아웃 이슈 Troubleshooting
공공 H사 KT Cloud 운영 자동화
2024년 11월 - 현재 | KT Cloud
3티어 인프라 운영 및 Ansible 기반 자동화
- 규모: 10개 시스템, 40여대 서버
- 주요 성과:
- Ansible 기반 보안 취약점 점검 및 조치 자동화
- Shell Script를 활용한 WEB/WAS 로그 관리 및 백업 이중화
- Nagios/Munin 기반 메트릭 모니터링 및 장애 알람 운영
셀프 매니지드 Kubernetes 클러스터 구축 (개인 프로젝트)
2024년 8월 - 현재
CSP 없이 자체 관리형 Kubernetes 클러스터를 구축하며 내부 동작 원리 학습
구축 환경:
- MetalLB + HAproxy + Nginx Ingress Controller (네트워크)
- Longhorn (분산 스토리지, 고가용성 PV)
- Jenkins, GitLab, Prometheus, Grafana (Helm Chart 기반 배포)
주요 성과:
- CSP의 ALB/EBS를 대체하는 오픈소스 기반 네트워크/스토리지 구성
- 115개 이상의 기술 블로그 포스트 작성 (학습 과정 문서화)
관련 포스트: Kubernetes 카테고리
기술 블로그
115개 이상의 기술 포스트 (2024년 11월 - 현재)
실무 경험과 학습 내용을 기록합니다.
- Kubernetes - 셀프 매니지드 클러스터 구축
- Container - Docker, CI/CD 파이프라인
- Linux - 시스템 관리 및 자동화
블로그: joonlog.github.io
연락처
- Email: ksi05298@gmail.com
- Blog: joonlog.github.io
- GitHub: github.com/joonlog
- Resume: 이력서 보기