JungHoon Control Center backend-portfolio.local
← Projects
INFRA · 25.06 ~ 25.08

자사 출입보안 솔루션

00항공 물리 보안 통합 시스템 구축 경험을 바탕으로, 자사 범용 출입보안 솔루션을 제품화하기 위한 내부 프로젝트입니다. 도메인 기능 구현보다 온프레미스 Kubernetes 개발환경·CI/CD 체계·공통 라이브러리 배포 구조를 설계하고 구축했습니다.

25.06~25.08KubernetesArgoCDArgo RolloutsNexusMySQL

Role & Scope

고객사 프로젝트 경험을 사내 제품화 가능한 솔루션 개발 인프라로 전환했습니다.

INFRA 25.06 ~ 25.08
기간
2025.06 ~ 2025.08
역할
온프레미스 인프라 및 CI/CD 구축 담당
참여 인원
총 7명 참여 프로젝트
구성
백엔드 4개 · 프론트엔드 1개 서비스
기술 스택
Kubernetes · ArgoCD · Argo Rollouts · GitHub Actions · Docker Hub · Helm · Nexus · MySQL · Spring Boot 3 · Java 17 · QueryDSL
  • 온프레미스 Kubernetes 개발환경 설계 및 구축
  • GitHub Actions 기반 빌드/배포 자동화
  • Docker Hub · Helm · ArgoCD · Argo Rollouts 연동
  • Nexus Repository 구성 및 공통 JAR 배포 구조 설계
  • Kubernetes 내부 네트워크 기반 서비스 간 통신 구조 정리

Architecture

GitHub Actions → Docker Hub / Helm → ArgoCD(Argo Rollouts Blue-Green) 배포 체계와, Nexus를 통한 공통 JAR 배포 구조입니다.

CI/CD · GitOps · 공통 라이브러리(Nexus) 배포 구조

flowchart TB
  GitHub["GitHub"] --> Actions["GitHub Actions"]
  Actions --> DockerHub["Docker Hub"]
  Actions --> HelmRepo["Helm Chart Repository"]
  Actions --> ArgoCD["ArgoCD Sync Trigger"]
  ArgoCD --> Rollouts["Argo Rollouts<br/>Blue-Green"]
  CommonJar["공통 로직 JAR"] --> Nexus["Nexus Repository"]
  Actions -. build dependency .-> Nexus
  subgraph K8s["On-Prem Kubernetes"]
    FE["Frontend x1"]
    BE["Backend Services x4"]
    MYSQL[("MySQL")]
  end
  Rollouts --> K8s
  FE --> BE
  BE --> MYSQL
  BE -. K8s 내부 네트워크 기반 통신 .-> BE
          

What I Did · 문제 해결

Docker Hub · Helm · ArgoCD · Argo Rollouts · Nexus를 엮어 솔루션 개발 표준 환경을 구성했습니다.

  1. 자사 솔루션용 개발환경 구축

    00항공 프로젝트 경험을 바탕으로 자사 범용 출입보안 솔루션 개발을 위한 온프레미스 Kubernetes 환경을 구성했습니다.

    개발환경에는 백엔드 4개 서비스와 프론트엔드 1개 서비스를 배포할 수 있도록 구성했습니다.

  2. CI/CD 자동화 구성

    GitHub Actions에서 서비스 이미지를 빌드해 Docker Hub에 push하고, Helm Chart 저장소의 image tag를 커밋 해시 기반으로 업데이트하도록 구성했습니다.

    이후 ArgoCD sync를 트리거해 Kubernetes에서 blue-green 배포가 시작되도록 했고, 실제 배포 전략은 Argo Rollouts로 구성했습니다.

  3. 공통 라이브러리 배포 체계 마련

    백엔드 공통 로직은 별도 JAR 라이브러리로 패키징해 Nexus Repository에 배포했습니다.

    각 백엔드 서비스가 공통 라이브러리를 의존성으로 가져가도록 구성해 중복 코드를 줄이고, 공통 정책 변경 시 재사용성을 확보했습니다.

  4. 서비스 간 통신 및 공통 인프라 구성

    Kubernetes 내부 네트워크를 기준으로 백엔드 서비스 간 통신 흐름을 정리했습니다.

    MySQL과 Nexus Repository를 개발환경에 함께 구성해, 애플리케이션 실행 환경과 공통 자산 배포 환경을 모두 갖춘 형태로 운영할 수 있게 했습니다.

Impact · 성과

면접에서 강조할 핵심 어필 포인트입니다.

  • 특정 고객사 프로젝트 경험을 사내 제품화 가능한 솔루션 개발 인프라로 전환한 프로젝트입니다.
  • 단순 배포 자동화가 아니라 Docker Hub · Helm · ArgoCD · Argo Rollouts · Nexus를 엮어 솔루션 개발 표준 환경을 만든 경험을 강조할 수 있습니다.
  • 공통 로직을 JAR로 분리하고 Nexus로 배포하는 구조는 팀 개발 생산성과 유지보수성을 함께 고려한 설계 포인트입니다.
Action completed