AWS

Deploy란

프도의길 2022. 5. 10. 19:53

배포란 우리가 개발한 서비스를 사용자들이 이용 가능하게 하는 일련의 과정입니다.

 

회사마다 추가적인 과정이 있을 수 있지만, 기본적으로 4단계를 거쳐서 개발한 서비스를 배포하게 됩니다.

 

Development 단계는 각자의 컴퓨터에서 코드를 작성하고 테스트하는 과정입니다. 개발 단계이기 때문에 실제 데이터를 이용하지 않고 더미 데이터를 이용해서 테스트합니다.

 

Integration 단계는 각자의 컴퓨터에서 작성한 코드를 합치는 과정입니다.

내가 작성한 코드가 다른 코드를 침범해서 오류를 일으키지 않는지, 코드 간에 conflict가 있지는 않은지 확인하는 과정을 거칩니다.

 

Development 환경과 Production 환경은 서로 다를 수가 있습니다.

 

여러분이 개발부터 배포까지 모든 것을 통제할 수 있는 상황이라면, 크게 걱정 없이 Production 환경을 구성할 수 있을 겁니다.

그러나, 여러 명이 함께 작업하는 프로젝트라면 어떨까요? node 버전도 제각각일 거고, 인증 정보나 데이터베이스 등에 접근하기 위해 사용하는 엔드포인트도 제각각일 겁니다.

 

예를 들어봅시다. 내 로컬에 설치된 데이터베이스 비밀번호는 rlazheld1234! 인 데, 클라우드에 설치된 데이터베이스 비밀번호는 supersecret! 일 수 있을 거예요.

 

이 모든 케이스를 코드 안에 담을 수 있을까요? 아니죠. 이처럼 Development 환경과 Production 환경은 서로 다를 수가 있습니다.

마치, 우리나라에서 잘 자라는 식물을 사막 한가운데에서 똑같은 방식으로 재배한다고 잘 자라지 않는 것과 비슷해요. 따라서 배포에서는, 환경의 차이를 이해하고 환경 설정을 코드와 분리하는 것이 중요합니다.

 

 

작성한 코드가 다른 환경에서 정상 작동할 수 있게 하려면,

 

설정을 환경 변수(envvars나 env라고도 불림)에 저장해야 합니다. 환경 변수는 코드 변경 없이 배포 때마다 쉽게 변경할 수 있습니다.

 

설정 파일과 달리, 잘못해서 코드 저장소에 올라갈 가능성도 낮습니다.

 

애플리케이션의 모든 설정이 정상적으로 코드 바깥으로 분리되어 있는지 확인할 수 있는 간단한 방법은 어떠한 인증정보도 유출시키지 않고 코드가 지금 당장 오픈 소스가 될 수 있는지 확인하는 것입니다.

 

슬라이드에 나온 내용은 이러한 환경 설정을 코드로부터 분리하는 방법론을 이야기하고 있습니다.

 

코드 상의 모든 곳에 절대 경로가 아닌 상대 경로를 사용해야 하며, `.env` 등을 이용해 환경 변수를 설정하세요.

 

그 외에도 docker와 같은 가상화 도구는 환경 자체를 메타데이터로 담아서 아예 모든 개발 환경을 통일시킵니다.

 

                                                  배포를 위한 굉장히 다양한 플랫폼들이 있습니다.