안녕하세요. IT 엘도라도 에 오신 것을 환영합니다.
글을 쓰는 것은 귀찮지만 다시 찾아보는 것은 더 귀찮습니다.
완전한 나만의 것으로 만들기 위해 지식을 차곡차곡 저장해 보아요.   포스팅 둘러보기 ▼

AWS (Amazon Web Service) (8)

[AWS] ECS 배포 환경 구축 과정의 Troubleshootings

현재 근무 중인 회사의 서비스에는 AWS EB(Elastic Beanstalk)를 이용한 배포 환경이 구축되어 있다. 그러나 최근에 이러한 배포 환경을 Docker 기반의 AWS ECS(Elastic Container Service)를 이용한 배포 환경으로 바꿔야 한다는 필요성을 느끼고 해당 작업을 필자가 맡게 되었다. 그 과정에서 Docker와 ECS를 학습하고 이를 바탕으로 수많은 삽질 끝에 기본적인 ECS 배포 방법을 익힐 수 있게 되었다. 이에 대한 내용은 직전 포스팅에 자세히 작성되어 있다. 그러나 이는 말 그대로 '기본적인' 배포 방법이었을 뿐, 실제 회사의 서비스에 적용하기에는 무리가 있었다. 이로 인해 직전 포스팅의 내용을 기반으로 서비스를 ECS에 배포하려 할 때 현실적으로 고려해야만 했..

[AWS] Docker 기반의 ECS로 Django, Gunicorn, Nginx 배포하기

근무 중인 회사에서 서버 배포 방식을 변경하는 중대한 업무를 맡게 되면서, Docker를 공부하고 또 이를 활용한 배포 서비스인 ECS에 대해서도 공부하게 되었다. 물론 Docker 기반의 ECS 서비스에 실제로 현재 회사의 서비스를 배포하는 작업은 수차례의 삽질을 필요로 했지만, 그 과정에서 얻은 것도 많고 뿌듯함도 크기에 이번 포스팅에 해당 내용을 최대한 상세히 기록해두고자 한다. 아무래도 ECS에 대한 글이 아직까지는 그리 많은 편이 아닌 듯하니, 이번 포스팅이 다른 사람들에게 많은 도움이 될 수 있기를 바란다. 1. Docker 설치 Docker를 설치하는 방법에 대해서는 이번 포스팅에서 다루지 않는다. 운영체제별로 다르기도 하고, 공식 문서에 아주 잘 나와 있으며, 공식 문서가 아니더라도 이미 ..

[AWS] 커스텀 도메인 등록 및 HTTPS 설정 (SSL/TLS 인증서 발급)

이 포스팅은 도메인, 혹은 DNS(Domain Name System)에 대한 기본 지식이 있음을 가정한다. 만약에 잘 모른다면 이 포스팅을 읽고 기본 개념을 먼저 숙지한 다음에 여기로 돌아오기 바란다. 또한 도메인을 등록하고 HTTPS를 설정할 EC2 인스턴스는 이미 마련되어 있다는 것까지 가정한다. 우리는 해당 EC2 인스턴스에 로드 밸런서를 연결하고 그 로드 밸런서에 대해 도메인을 등록하고 HTTPS를 설정할 것이다. 포스팅 내용은 다음과 같은 순서로 이뤄질 것이다. AWS Route 53에서 도메인 등록 및 호스팅 영역 생성 AWS Certificate Manager(이하 ACM)에서 SSL/TLS 인증서 발급 AWS Application Load Balancer(이하 ALB) 생성 AWS Rout..

[AWS] EC2, RDS에 Django REST API 서버 배포하기 (Amazon Linux 2, PostgreSQL, Gunicorn)

여기서는 EC2 인스턴스(AMI : Amazon Linux 2)와 RDS 인스턴스(엔진 : PostgreSQL)를 이미 생성했고, EC2 인스턴스에 SSH로 접속하는 방법을 알고 있으며, EC2 인스턴스에서 RDS 인스턴스로 접근이 가능하도록 인바운드 규칙까지 설정해둔 상태라고 가정한다. 더불어 EC2 인스턴스에 Nginx라는 웹 서버를 깔고 기본적인 설정도 이미 해둔 상태를 가정한다. 이와 관련해서는 EC2에 대해 설명하는 이 포스팅, RDS에 대해 설명하는 이 포스팅, 그리고 EC2에 Nginx를 세팅하는 것을 다루는 이 포스팅을 반드시 먼저 읽고 오길 바란다. 아래에서 설명하는 명령어들은 기본적으로 해당 EC2 인스턴스에 SSH 접속이 이뤄진 상태에서 입력하는 것들에 해당한다고 보면 된다. * 하나..

[AWS] EC2에 React 프로젝트 배포하기 (Amazon Linux 2, Nginx)

EC2 인스턴스를 생성하고 해당 EC2 인스턴스에 SSH로 접속하는 방법에 대해서는 이 포스팅을 참조하자. 여기서는 이미 해당 포스팅의 내용에 기반하여 EC2 인스턴스를 생성했고(AMI : Amazon Linux 2) 해당 EC2 인스턴스에 SSH 원격 접속이 이뤄진 상태라고 가정하고 설명을 진행하도록 하겠다. 즉 아래에서 설명할 모든 명령어들은 SSH 접속 후 EC2 인스턴스의 터미널에서 입력하는 명령어들에 해당한다. 1. 기본 소프트웨어 및 Nginx, Node.js 설치 $ sudo yum update 현재 EC2 인스턴스에 설치되어 있는 모든 소프트웨어 패키지들을 업데이트한다. 개발자라면 yum 혹은 apt 명령어에 대해 한 번쯤은 들어봤을 것이다. yum과 apt는 둘 다 Linux 운영체제에서..

[AWS] RDS 생성 (PostgreSQL) + EC2 연결

AWS RDS는 Relational Database Server의 약자로, 데이터베이스 서버로 사용할 수 있도록 AWS에서 제공해주는 하나의 물리적인 컴퓨터라고 생각하면 된다. EC2 인스턴스 생성과 관련한 직전 포스팅에서 다뤘듯이, 초보 개발자는 Elastic Beanstalk, Kubernetes 등의 배포 패키지를 바로 이용하는 것보다 AWS의 각 리소스를 직접 생성하고 설정까지 해보면서 배포를 해보는 경험을 가지는 것이 좋다. 이러한 목적으로, 직전 포스팅에서는 EC2 인스턴스를 직접 생성하고 이에 접속하는 방법까지 알아보았다면, 이번 포스팅에서는 데이터베이스 서버 운용을 위한 RDS 인스턴스를 직접 생성하고 이를 EC2 인스턴스에 연결하는 방법을 알아보도록 할 것이다. 참고로 RDS도 EC2와 ..

[AWS] EC2 생성 (Amazon Linux 2) + PuTTY SSH 접속

AWS EC2는 Elastic Compute Cloud의 약자로, 서버로 사용할 수 있도록 AWS에서 제공해주는 하나의 물리적인 컴퓨터라고 생각하면 된다. 배포를 해본 적 없는 초보 개발자들은 AWS에서 제공해주는 Elastic Beanstalk, Kubernetes 등의 배포 패키지를 이용하면 훨씬 더 간편하게 배포를 해볼 수 있다. 그러나 이러한 패키지들은 배포를 위한 대부분의 중요한 설정들을 내부에 숨겨두었기 때문에 배포의 원리를 이해하고 공부해보기에는 적합하지 않다. 그래서 필자는 초보 개발자도 직접 EC2 인스턴스를 생성하고 배포를 위한 각종 설정들을 따라해 보면서 공부해보기를 권장한다. 참고로 AWS 계정은 가입하고 1년 동안은 무료로 몇 가지 리소스들을 제공해주는데, 그중 하나가 바로 EC2..

[AWS] Django 프로젝트 배포하기 (Elastic Beanstalk + PostgreSQL)

이전 포스팅과 연결 : [Django] 프로젝트 구조 설정 (앱, 템플릿, Static 파일 등) 1. 웹 서버, WSGI, 웹 어플리케이션 개념 장고 프로젝트를 배포하기에 앞서, 간단하게 웹 서버와 관련된 사전 지식들을 짚고 넘어가자. 웹 서버 (Web Server) 정적인 컨텐츠를 제공하는 서버를 의미한다. 프로그램을 실행하거나 데이터베이스에 접근하는 등의 동적인 기능은 수행할 수 없다. 파일 시스템에 존재하는 정적 파일들을 찾아서 제공해주는 정적 기능만 수행할 수 있다. 대표적으로 Apache, Nginx 등이 있다. 웹 어플리케이션 서버 (Web Application Server, WAS) 동적인 컨텐츠를 제공할 수 있는 서버를 의미한다. 프로그램을 실행하거나 데이터베이스에 접근하는 등의 동적인 ..