안녕하세요😎 백엔드 개발자 제임스입니다 :)
이번 포스팅에서는 AWS를 통한 배포하는 방법을 정리하려고 합니다. AWS는 Amazon에서 제공하는 클라우드 서비스입니다. 우리는 다양한 방법으로 애플리케이션을 배포할 수 있습니다. 기존 방식으로 개인의 컴퓨터를 통해서 배포할 수도 있습니다. 하지만 컴퓨터를 항상 작동시켜야하며, 이 외에도 귀찮은 일이 이만저만이 아닙니다. AWS는 간단하게 컴퓨터를 빌려주는 것이라고 생각하면 좋은데요. 덕분에 편리하게 배포와 관리를 할 수 있게 됩니다. AWS 뿐만 아니라 클라우드 서비스를 제공하는 플랫폼은 굉장히 많습니다. 글머에도 여전히 AWS가 많이 이용되고 있기 때문에, AWS에 집중해서 정리하도록 하겠습니다.
1. 다양한 AWS 서비스
Name | AWS 분류 기준 | 유닛 | 기준 모델 및 클래스 |
EC2 | 컴퓨팅 | AWS | t2.micro |
S3 | 스토리지, 서버리스 | AWS | S3 Standard |
RDS | 데이터베이스 서비스 | AWS | MySQL. db.t2.micro |
CodeBuild | 개발자 도구 | 배포 자동화 | |
CodeDeploy | 개발자 도구 | 배포 자동화 | |
CodePipeline | 개발자 도구 | 배포 자동화 | |
IAM | 보안 자격 증명 및 규정 준수 | AWS | |
System Manager | 보안 자격 증명 및 규정 준수 | 배포 자동화 |
1) EC2
- 아마존 웹 서비스에서 제공하는 클라우드 컴퓨팅 서비스
- 서버, 스토리지, 데이터베이스 등의 서비스를 제공
- 가상의 컴퓨터를 빌려주는 것
- 손쉽게 운영체제, CPU, RAM, 용량 구성
2) AMI
- 소프트웨어 구성이 기재된 템플릿
- ex) 운영체제(윈도우, 우분투 리눅스 등)만 깔려있는 템플릿, 특정 런타임이 설치된 템플릿(윈도우 + JVM 등)
배포를 하다보면, 인스터스라는 용어를 계속 보게 됩니다. 인스턴스는 1대의 컴퓨터를 의미하는 단위입니다.
AWS에서 컴퓨터를 빌리는 것을 인스턴스 생성이라고 합니다.
3) RDS (Relational Database Service)
- 관계형 데이터베이스 서비스
- 말그대로 관계형 DB를 대여해주는 것
4) S3 (Simple Storage Service)
- 인터넷 공간에 데이터를 저장하는 저장소인 클라우드 스토리지 서비스
- 높은 확장성
- 버킷을 통해 정적 웹 사이트 호스팅 가능
웹 호스팅 : 서버의 한 공간을 빌려주어 웹사이트의 배포, 운영이 가능하게 만들어주는 서비스입니다.
2. 3 Tier-Architecture 배포 전략
위에서 AWS에서 제공하는 서비스에 대해서 알아보았습니다. 사실 이 외에도 제공하는 서비스는 굉장히 많습니다. 그 중 3 Tier-Architecture 배포 전략이 있는데요. 위에서 알아봤던 서비스인 EC2, S3, RDS를 활용하는 것입니다. 앞으로 해당 전략을 통한 배포에 대해서 포스팅할 예정인데요. 그 전에 이번 포스팅에서는 배포를 하기 전에 진행해야 할 중요한 과정인 인스턴스 생성과 연결의 방법을 알아보도록 하겠습니다.
1) 서버 배포 (EC2) - 인스턴스 생성
(1) 인스턴스 생성 버튼을 누릅니다.
(2) 인스턴스의 이름을 작성하고, 용도에 맞게 AMI를 선택합니다.
여기서는 ubuntu와 프리티어가 가능한 t2.micro 유형을 선택했지만, 상황, 리전에 따라 상이할 수 있습니다.
(로컬 환경에 ubuntu를 설치해주세요.)
(3) 새 키 페어를 생성합니다.
현재 생성하고 있는 인스턴스를 원격으로 제어하기 위해서는 SSH 연결이 필요합니다.
위 과정에서 EC2 인스턴스에 연결하기 위한 Key 이름을 작성합니다. 그리고 키 페어 생성 버튼을 누르면, pem 파일로 다운로드가 됩니다.
(4) 인스턴스 생성 버튼 클릭
키 페어까지 생성했다면, 화면 가장 하단에 있는 인스턴스 시작 버튼을 클릭합니다. 그 외에 내용은 지금은 건드리지 않아도 괜찮습니다.
인스턴스 생성이 완료되면, 위와 같이 실행 중인 인스턴스가 보일 것입니다. 인스턴스는 여러개 만들 수 있습니다. 이때 인스턴스 ID를 통해 구분할 수 있습니다. 지금까지 과정이 AWS에서 PC 한 대를 빌린 것과 동일합니다. 그렇다면 이렇게 빌린 이 PC를 사용해야겠죠?
사용하는 방법은 원격접속을 하는 것입니다. 그리고 이 때 필요한 것이 위에서 다운로드한 키 페어 파일(.pem)입니다.
2) 서버 배포 (EC2) - 인스턴스 연결
(1) 이어서 인스턴스 ID를 클릭합니다.
(2) 해당 창이 나오면 우측에 연결을 클릭합니다.
(3) 다음은 로컬 터미널에서 SSH 프로토콜을 이용해서 인스턴스와 연결할 것입니다.
이전에 다운로드했던 키 페어 파일(.pem)을 활용할 것인데요. 파일에 접근하기 위해서는 권한을 수정해줘야 합니다.
권한을 수정해주는 명령어는 위 이미지에서 1번 명령어 입니다.
(4) 로컬에 있는 ubuntu 터미널을 연 뒤, 키 페어 파일이 설치된 경로로 이동합니다.
/chmod 400 {키_페어_파일}.pem
* chmod란 Linux의 기본 명령어로 change mode의 축약어입니다.
* chmod 뒤에 3개의 숫자는 순서대로 소유자/그룹/전체에 대한 권한을 의미합니다. (읽기(4), 쓰기(2), 실행(1) 숫자의 조합)
* 400 은 나에겜만 읽기 권한이 있도록 권한을 부여
권한을 수정하지않고 진행하면 shh 키 접속 시 거절됩니다.
(5) 이어서 로컬 ubuntu 터미널에 shh 명령어를 입력하여 인스턴스에 접속합니다.
계속 연결할 것이냐는 질문이 나오면 yes를 입력하면 됩니다.
이제 우리가 생성했던 인스턴스 컴퓨터에 연결했습니다. 위 그림처럼 경로가 바뀐 것이 보이나요?
- ssh 프로토콜 명령어
- 키 페어 파일 이름의 Key
- 사용자 이름 ( ubuntu 인스턴스를 생성한 경우 기본적으로 unbuntu라는 사용자 이름이 생성됨)
- 가상 PC
지금까지 인스턴스를 생성하고 연결하는 과정을 수행했습니다. 과정이 길기 때문에 게시글을 여러개로 나누고 있습니다.
EC2 서비스를 활용한 서버 배포 방법은 아래 링크를 참고해주세요!
'개발 > Programming' 카테고리의 다른 글
[빌드] ./gradlew: /bin/sh^m: bad interpreter: no such file or directory 오류 발생 그리고 해결 (7) | 2022.09.02 |
---|---|
[배포] AWS를 통한 배포 방법 알아보기(EC2 서버 실행) (6) | 2022.08.09 |
[JSP] 아이디 중복 체크 기능 구현 <동기 방식> (5) | 2021.10.17 |
웹 프로젝트 초기 설정 (0) | 2021.09.17 |
한글 인코딩 UTF-8 설정 (0) | 2021.09.17 |