해결된 질문
작성
·
488
1
보통 운영 서버와 테스트 서버를 관리할 때, 실무에서는 어떤 방식으로 관리하는지 궁금합니다! 저도 팀 프로젝트를 하면서 테스트 서버와 운영 서버를 분리시켜서 CI/CD를 구축하고 싶은데 어떤 방법이 맞는건지 잘 모르겠어서요! 두 개의 EC2를 사용하는건 너무 부담되는데 그럼 하나의 EC2에서 컨테이너 2개(테스트용, 배포용)를 각각 운영하는 방법이 맞는걸까요?
답변 2
1
cho766님 안녕하세요, 데브위키입니다.
아무래도 운영 서버의 경우 특별히 보수적으로 다루는 것이 실무의 관례입니다!
그래서 기본적으로 개발 서버와 운영 서버는 완전히 분리해서 구성하는 것이 일반적입니다.
하지만 이 부분은 말 그대로 관례인 것이고, 실제로 두 개의 컨테이너를 하나의 EC2에서 운영하는 것이 완전히 틀린 구조라고는 말할 수 없습니다. 😀
중요한 것은 환경을 구성하는 방법에 대해 장단점을 고려하면서, 단점을 어떻게 보완하는지를 고려하는 것이라고 생각합니다.
예를 들어 하나의 EC2로 구성하면, EC2로 진입하는 네트워크 트래픽이 섞일 위험이 있을 것입니다. 개발 컨테이너로 진입하는 트래픽에 부하가 발생하면 네트워크에 영향을 주어서, 운영 컨테이너에도 영향을 주지 않도록 네트워크 단에서의 격리를 고려해야 할 수도 있겠죠.
물론 구성하는 환경마다 차이가 고려해야 하는 부분은 달라질 것이기 때문에, 강의에서 학습하신 지식이 앞으로 다양한 환경을 구성하는데 있어서 기본기가 되실 수 있을 것입니다.
강의 들으시면서 더 궁금하신 부분이 있으면 편하게 질문주세요!
1
안녕하세요, 인프런 AI 인턴입니다.
실무에서는 테스트 서버와 운영 서버를 분리하여 관리하는 것이 일반적입니다. CI/CD 파이프라인을 통해 자동화된 테스트를 실행하고, 문제가 없을 때만 운영 서버로 배포합니다. 두 개의 서버 인스턴스를 사용하는 것이 부담된다면, 하나의 EC2 인스턴스에서 여러 컨테이너(테스트용, 배포용)를 사용해 분리하는 방법이 있습니다.
도커와 같은 컨테이너화 도구를 사용하면 하나의 서버에 여러 환경을 격리하여 구축할 수 있습니다. 예를 들어, 하나의 EC2 인스턴스에 운영용 컨테이너와 테스트용 컨테이너를 별도로 실행시키고, 포트를 다르게 설정하여 서비스를 구분할 수 있습니다.
추가적으로 Spring Boot 프로젝트의 경우, Testcontainers를 사용해 개발 환경에서 종속성 있는 서비스들을 컨테이너를 통해 신속하게 시작하는 방법이 있습니다. 이렇게 하면 데이터베이스 서버와 같은 외부 서비스를 수동으로 준비할 필요 없이 테스트 환경을 쉽게 구성할 수 있습니다.
만약 자세한 구현법을 알고 싶으시다면, Spring Boot 문서의 “Using Testcontainers at Development Time” 섹션을 참고하시면 도움이 됩니다.
참조 문서: Spring Boot Reference Documentation v3.1.5 - Using Testcontainers at Development Time
이 문서에는 Java나 Kotlin을 사용해 테스트 컨테이너를 설정하는 방법과, @TestConfiguration
을 작성하여 컨테이너 인스턴스를 선언하는 예시가 설명되어 있습니다. 이를 통해 테스트 서버와 유사한 환경을 개발 시간에 구축해 쉽게 테스트하고 개발할 수 있습니다.
컨테이너 기반의 개발 방법이나 CI/CD 구축에 대한 더 자세한 내용은 인프런과 같은 학습 플랫폼에서 관련 강의를 찾아보시는 것도 좋은 학습 방법이 될 수 있습니다.