컨테이너 지원 개발로 더 빠르게 개발하고 테스트하기

컨테이너 지원 개발로 더 빠르게 개발하고 테스트하기 (Faster development and testing with container-supported development)

컨테이너는 앱용으로만 쓰는 게 아니에요. 앱이 의존하는 서비스나 디버깅 도구까지 컨테이너로 돌려 개발 환경을 한층 업그레이드하는 방법을 알려드릴게요.

출처: 문서

본문

컨테이너는 다양한 환경에서 애플리케이션을 일관되게 빌드하고 공유하며 실행하는 방법을 제공해요. 보통은 앱 자체를 컨테이너화하는 데 쓰지만, 컨테이너는 개발에 필요한 필수 서비스를 실행하는 것도 무척 쉽게 만들어줘요. 원격 데이터베이스를 설치하거나 연결하는 대신, 직접 데이터베이스를 띄우면 되거든요. 하지만 가능성은 여기서 끝나지 않아요.

컨테이너 지원 개발(container-supported development)에서는 컨테이너를 활용해 앱이 필요로 하는 서비스의 로컬 인스턴스나 에뮬레이터를 실행함으로써 개발 환경을 강화해요. 이렇게 하면 피드백 루프가 빨라지고, 원격 서비스와의 결합도가 줄어들며, 오류 상태를 더 잘 테스트할 수 있어요.

그리고 가장 좋은 점은, 개발 중인 메인 앱이 컨테이너에서 실행되고 있지 않아도 이런 이점을 누릴 수 있다는 거예요.

무엇을 배우게 될까요 (What you'll learn)

  • 컨테이너 지원 개발의 의미
  • 컨테이너화되지 않은 앱을 컨테이너화된 서비스에 연결하는 방법
  • 컨테이너로 서비스의 로컬 인스턴스를 에뮬레이트하거나 실행하는 몇 가지 예시
  • 컨테이너로 개발 환경에 추가적인 문제 해결·디버깅 도구를 더하는 방법

이런 분들을 위한 가이드예요 (Who's this for?)

  • 공유되거나 배포된 인프라나 원격 API 엔드포인트에 대한 결합을 줄이고 싶은 팀
  • 개발 중에 클라우드 서비스를 직접 사용할 때 생기는 복잡성과 비용을 줄이고 싶은 팀
  • 데이터베이스, 큐(queue) 등에서 무슨 일이 벌어지는지 더 쉽게 시각화하고 싶은 개발자
  • 앱 개발 자체에 영향을 주지 않으면서 개발 환경 설정의 복잡성을 줄이고 싶은 팀

도구 통합 (Tools integration)

Docker Compose와 Testcontainers와 잘 어울려요.

모듈 (Modules)

컨테이너 지원 개발이란? (What is container-supported development?)

컨테이너 지원 개발은 앱이 의존하는 서비스의 로컬 인스턴스나 에뮬레이터를 실행해서 개발 환경을 강화하는 아이디어예요. 일단 컨테이너를 쓰기 시작하면, 서비스에서 무슨 일이 벌어지는지 시각화하거나 문제를 해결하기 위한 추가 서비스를 쉽게 붙일 수 있어요.

데모: 데이터베이스를 로컬에서 실행하기 (Demo: running databases locally)

컨테이너 지원 개발을 쓰면 데이터베이스를 로컬에서 쉽게 실행할 수 있어요. 이 데모에서는 그 방법과, 컨테이너화되지 않은 앱을 데이터베이스에 연결하는 방법을 보여드릴게요.

팁: 컨테이너에서 데이터베이스를 실행하는 방법은 Use containerized databases 가이드에서 더 배울 수 있어요.

데모: API 엔드포인트 모킹하기 (Demo: mocking API endpoints)

많은 API는 다른 데이터 엔드포인트의 데이터가 필요해요. 개발 단계에서는 자격 증명 공유, 가용성/업타임, 요청 속도 제한 같은 복잡성이 생기죠. 그래서 이런 서비스에 직접 의존하는 대신, 앱이 목(mock) API 서버와 상호작용하게 할 수 있어요.

이 데모에서는 WireMock을 사용해 앱의 다양한 오류 상태를 포함해 개발·테스트를 쉽게 만드는 방법을 보여드릴게요.

팁: WireMock으로 API를 모킹하는 방법은 Mocking API services with WireMock 가이드에서 더 배울 수 있어요.

데모: 클라우드를 로컬에서 개발하기 (Demo: developing the cloud locally)

앱을 개발할 때는 Amazon S3 같은 클라우드 서비스에 특정 부분을 맡기는 것이 더 쉬운 경우가 많아요. 하지만 로컬 개발에서 이런 서비스에 연결하면 IAM 정책, 네트워킹 제약, 프로비저닝 복잡성이 생기죠. 이런 요구사항은 프로덕션 환경에서 중요하지만, 개발 환경을 크게 복잡하게 만듭니다.

컨테이너 지원 개발에서는 개발·테스트 중에 이런 서비스의 로컬 인스턴스를 실행해 복잡한 설정 없이 작업할 수 있어요. 이 데모에서는 LocalStack으로 개발자 워크스테이션에서 완전히 애플리케이션을 개발·테스트하는 것이 얼마나 쉬운지 보여드릴게요.

팁: LocalStack 사용법은 Develop and test AWS Cloud applications using LocalStack 가이드에서 더 배울 수 있어요.

데모: 추가 디버그·문제 해결 도구 더하기 (Demo: adding additional debug and troubleshooting tools)

개발 환경에서 컨테이너를 쓰기 시작하면 데이터베이스나 메시지 큐의 내용을 시각화하고, 문서 저장소를 시드(seed)하고, 이벤트를 발행하는 추가 컨테이너를 훨씬 쉽게 붙일 수 있어요. 이 데모에서는 몇 가지 예시를, 그리고 여러 컨테이너를 서로 연결해 테스트를 더 쉽게 만드는 방법을 보여드릴게요.