AWS Deploy - 서버 배포

📅 TIL #76



🎯 Achievement Goals


  • Deployment의 의미를 이해할 수 있다.
  • RDS와 EC2에 설치된 데이터베이스의 차이를 이해할 수 있다.





👉 Deployment


deploy

배포란 개발한 웹, 앱을 사용자들에게 양질의 서비스를 제공하는 것이라고 생각한다.

보통은 위의 사진과 같이 4단계를 거쳐서 개발한 서비스를 배포하게 된다.




deploy2


위의 사진을 보면 배포 과정이 순조롭게 진행될 것 같아보이지만, 보통 개발은 혼자 하지 않는다.

그래서 여러 명이 함께 작업하는 프로젝트라고 생각하면 사소한 것(ex. node 버전)부터 인증 정보나 데이터베이스 등에 접근하기 위해 사용하는 엔드포인트도 다 다를 것이다.

따라서 배포에서는, 환경 설정을 코드와 분리하는 것이 중요하다!



그러면 어떻게 잘 분리를 해야할까?

작성한 코드가 다른 환경에서 잘 작동하려면 설정을 환경 변수(.env)에 저장을 해야한다.

환경 변수는 코드 변경 없이 쉽게 배포 때마다 쉽게 변경할수도 있고, 실수로 코드 저장소에 올라갈 가능성도 낮다.

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

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

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

나도 프로젝트에서 docker를 활용할 예정이다.






👉 Amazon EC2 (Elastic Compute Cloud)


deploy3


EC2란 아마존 웹 서비스에서 제공하는 클라우드 컴퓨팅 서비스이다.

클라우드 컴퓨팅은 인터넷(클라우드)을 통해 서버, 스토리지, 데이터베이스 등의 컴퓨팅 서비스를 제공하는 서비스입니다.

쉽게 말하자면 아마존에서 가상의 컴퓨터 한대를 빌리는 것과 같다!!

인스턴스는 1대의 컴퓨터를 의미하고 AWS에서 컴퓨터를 빌리는 것을 인스턴스를 생성한다라고 표현한다.



deplay555


AWS EC2 인스턴스를 생성한다는 것은 AMI(Amazon Machine Image)를 토대로 운영체제, CPU, RAM 또는 런타임 등이 구성된 컴퓨터를 빌리는 것이다.






👉 Amazon RDS


rds


왜 RDS를 사용할까? 그 차이는 분명하다.


EC2 인스턴스에 관계형 데이터베이스 엔진을 설치해서 데이터를 관리를 하게 되면 직접 데이터베이스를 소유한 것인데, 그럴 경우 본인이 직접 다 관리를 해야한다. 개인 소유이지만 직접 관리를 해야하는 번거로움이 있다.


반면에, RDS를 사용할 경우 AWS에서 데이터베이스를 빌려오는(?) 것과 같다.

나는 데이터베이스를 빌려서 사용하고 유지보수와 관련된 일들은 RDS가 전적으로 관리를 해준다고 보면 된다. 내가 해야할 일은 초기 설정을 제외하고 데이터베이스에 저장된 데이터만 관리를 하면 되기 때문에 편의성 측면에서 매우 뛰어나다.


결과는 서버에 배포를 성공했다!

aws222222








🙌 느낀점


오늘 배포에 대한 개념과 배포를 실습해보는 시간을 가졌는데 음… 배포하는 일도 쉽진 않구나.. 라는걸 새삼 느꼈다.

프로젝트를 하게 되면 배포할 서버와 클라이언트를 구축하고, 배포는 뚝딱 되는줄만 알았었던 나로써는 아주 신세계였다.

예전에는 서버를 관리하기 위해 엄청나게 큰 서버실도 있었다는데 그에 비하면 정말 인터넷 성장은 날이갈수록 무서울 정도이다.

그래도 개발하기 더 좋은 환경에서 태어났으니… 잘 해보자..!





👊 내일의 TIW(today I Will)

AWS Deploy - 클라이언트 배포, 데이터베이스 연결