-
직접 개발한 앱을 배포하기까지 흐름AWS 2024. 3. 1. 03:19
이번에 직접 만든 앱을 배포하며 겪은 과정을 정리하려고 한다.
모델들을 선택한 이유와 간단한 흐름만을 정리할 것이며, AWS 화면 가이드나 인스턴스 생성, 설정등의 세세한 부분을 설명하지는 않을 것이라 보고 따라하실 분들은 다른 글을 참고하는게 좋을 것이라 생각한다...
AWS
나중에 정리해서 올리려 했던 AWS 교과서의 내용 중 일부이다.
클라우드 컴퓨팅은 인터넷을 통해 요구가 있을 때 직스(온디맨드(on-demand) IT 자원을 제공하며, 사용한 만큼 비용을 지불하는 서비스이다. 좀 더 이해하기 쉽게 클라우드라는 단어의 의미와 연결하여 말하자면, 인터넷 구간 어딘가에 구름 형태로 쌓여, 실제 물리적인 자원은 보이지 않지만 IT 자원을 원하는대로 가져다 사용할 수 있는 컴퓨팅 서비스를 의미한다. AWS 와 같은 클라우드 공급자에게 필요에 따라 다양한 IT 자원을 공급받을 수 있다.
클라우드 컴퓨팅을 사용하는 이유는 아래와 같다.
1. 확장성과 유연성
2. 비용 절감
3. 유연한 비즈니스 모델
4. 보안 및 안정성
5. 전문 지식과 자원의 활용
6. 글로벌 확장성
AWS는 다양한 클라우드 컴퓨팅 서비스 모델을 지원하며, 그 중 대표격으로 불리는 것이 EC2 클라우드 이다.
EC2
AWS의 수많은 클라우드 컴퓨팅 서비스 중에서 EC2가 대표격으로 불리는 이유는 여러가지가 있지만,
상대적으로 존재하는 EC2 만의 장점은 아래와 같다.
1. 가상 머신의 완전한 제어
2. 유연한 가격 모델
3. 다양한 인스턴스 유형
4. 방화벽 및 보안 그룹 설정
5. 커뮤니티 AMI 및 마켓플레이스그리하여 나는 EC2 인스턴스를 사용해 가상 컴퓨터 환경에서 직접 만든 프로젝트를 배포하고 실행시켰다.
프리티어가 아닌 유형을 선택하지 않도록 조심하며(과금 발생) 설정을 하고 인스턴스를 생성하면, 그 인스턴스의 정보에서
퍼블릭 IPv4 주소를 통해 콘솔 환경에서 EC2 인스턴스에 접근할 것이다.
Docker
우리의 프로젝트는 리눅스 환경의 EC2 콘솔에서 바로 실행시킬 수는 없다.
때문에 가상화 기술인 Docker를 사용하여 해당 운영체제의 이미지를 생성한다.
아래의 과정을 통해 EC2에서 프로젝트를 실행 시킬 수 있다.
도커 데스크탑 설치 > 인텔리제이 연동 > 이미지 파일 생성 > dockerhub 에 업로드 > EC2에 도커 설치
> 도커 실행 > 사용자 계정을 docker 그룹에 추가 > 시작시 docker를 실행하도록 등록 > EC2에서 이미지 파일 push
> 재부팅 > 도커 허브 로그인 > 이미지 파일 pull > 이미지 파일 실행(+ 포트 설정)
만약 내 프로젝트에 DB가 연결되어 있다면 실행은 실패할 것이다.
RDS
DB를 설치하여 내 로컬의 DB를 사용하는 것이 가능하기는 하다.
하지만 이 방법은 DB의 가용성, 확장성 및 보안에 제한을 줄 수 있다.
또한 DB의 백업, 복원을 개발자가 수동으로 처리해야 한다.
RDS를 사용하면 데이터베이스 서버를 관리할 필요가 없으며, AWS가 데이터베이스의 가용성, 보안, 백업 등을 관리해 준다. 이를 통해 프로덕션 환경에서 안정적이고 확장 가능한 데이터베이스 솔루션을 제공할 수 있다.따라서 로컬 데이터베이스를 사용할 때는 개발 및 테스트 목적으로 사용하는 것이 일반적이며, 프로덕션 환경에서는 RDS와 같은 관리형 데이터베이스 서비스를 사용하는 것이 좋다.
먼저 서브넷 그룹을 생성하여 미리 생성한 EC2 와 같은 보안 그룹으로 설정한다.
다음은 파라미터 그룹을 생성한다.
사용할 DB의 종류와 버전을 선택하여 생성한다.
이전의 자료들을 살펴보면 mysql은 한글을 지원하지 않기 때문에 파라미터 그룹 편집에서 utf-8mb4 로 설정해야 하는 파라미터들이 있었다는 것을 알 수 있다.
하지만 지금은 따로 설정하지 않아도 utf-8mb4 가 설정되어 있기 때문에 따로 신경쓸 필요는 없다.
다음은 RDS를 생성하자.
미리 만들어 둔 보안 그룹과 서브넷 그룹, VPC 를 설정해준다.
public access는 '예' 로 설정해야 우리 컴퓨터를 RDS에 연결할 수 있다.
추가 설정에서 생성해 둔 파라미터 그룹도 설정한다.
RDS 생성을 완료 했다면, 인텔리제이에서 기존에 사용하던 DB를 삭제하고 생성한 RDS로 DB를 교체해 주자.
RDS 정보에 엔드포인트 주소를 복사하여 호스트에 입력하고 마찬가지로 생성할 때 등록한 사용자와 비밀번호를 입력한다.
데이터베이스는 공란으로 두고 확인을 누른다.
RDS 로 mysql을 만들면 mysql 이라는 데이터베이스가 기본적으로 존재하고 있어 혼동이 올 수 있지만, 이 데이터베이스는 Mysql의 시스템베이스로 사용되기 때문에 직접 접근하는 것을 권장하지 않는다.
콘솔창을 이용하여 database 를 생성해 주고, 그곳에 연결하도록 하자.
(프로젝트의 properties or yml 주소도 엔드포인트 주소로 바꿔주자.)
만약 이 과정까지 특별한 문제가 없었다면 정상적으로 EC2 콘솔에서 프로젝트가 실행 될 것이다.
그러면 이제 public DNS 를 통해 해당 앱에 접근할 수 있다.
이 DNS를 수정하는 방법이나 그동한 설정한 것들의 자세한 의미, 기타 추가할 수 있는 AWS의 기능들은 나중에 알아보려고 한다.