■ 프로젝트 배경


서비스 개편 이후 도입된 API를 사용하기 위해 배포가 될 때마다 화이트리스트에 IP를 등록했습니다. 개발자가 수동으로 매번 IP를 등록하는 점이 위험성이 높고 번거로워, 개선점을 논의하게 되었습니다.

■ 프로젝트 목표 및 성과


목표 성과
1 외부와의 통신에 대해 아웃바운드가 통일되도록 아키텍처를 개선 Cloud NAT(Public NAT)를 도입하여 개선
2 무중단 서비스 방식을 유지 Cloud NAT(Public NAT)를 도입하여 개선

image.png

서비스 무중단 배포를 위해 GCP MIG(Managed Instance Group)의 Substitute 방식을 이용했습니다. 이 방식은 서비스를 중단하지 않고 배포할 수 있지만, 인스턴스명과 IP 주소가 변경됩니다. 고정 IP를 부여해도 아웃바운드 트래픽 IP는 변동되는 문제를 해결하여, 최초 한 번의 화이트리스트 등록으로 API 사용이 가능하도록 개선합니다.

■ 프로젝트를 통해 배운 점과 앞으로 활용할 점


  1. Cloud NAT을 통해 아웃바운드 IP를 통일하는 방식으로 아키텍처를 개선했습니다.

    image.png

    기존 요구사항(서비스 무중단 배포)을 유지하면서도 문제를 해결 가능한 아키텍처로 개선하였습니다.

  2. 사용자와 개발자 모두에게 안정성을 주는 아키텍처를 완성하였습니다.

    사람이 직접 화이트리스트 IP를 작성하는 것은 서비스 운영에 있어 위험합니다. 아웃바운드를 통일함으로써 개발자의 편의성 증대 뿐만 아니라, 사용자에게도 더 안정적인 서비스를 제공하도록 개선하였습니다.

  3. Cloud NAT 도입을 위해 전반적인 인프라를 직접 구축하는 과정을 겪을 수 있었습니다.

    Cloud NAT 도입을 위해 IP가 부여되지 않는 인스턴스를 새로 만들어야 했습니다. Instance Template을 구성하고 Instnace Group을 생성하여 애플리케이션을 배포하는 등 서비스 운영에 필요한 인프라 작업을 직접 수행하였습니다.