본문 바로가기
부트캠프/코드스테이츠 백엔드부트캠프 43기

코드스테이츠 백엔드 부트캠프 43기 (AWS - Cloud)

by 고구마는호박고구마 2023. 3. 30.
클라우드

https://cloud.google.com/learn/what-is-cloud-computing?hl=ko

 

대표적인 클라우드 컴퓨팅을 제공하는 회사

AWS 

MS Azure (마이크로소프트)

GCP (구글)

 

우리가 만든 웹페이지를 외부에서도 보려면 언제든지 접근이 되어야 하기때문에 서버가 계속 가동이 되어야 된다.

그래서 나의 컴퓨터를 서버로 만들거나 외부 서버를 이용하여 배포를 하게 된다.

 

그래서 우리는 외부서버인 Amazon Web Service 의 클라우드 서비스를 이용하여 배포를 해보는 학습을 하였다.

AWS는 다양한 기능을 제공하고 있으며 우리는 그 중 3Tier-Architecture 배포 전략을 사용하여 배포를 하였다.

 

 

 

3Tier 란 

클라이언트(S3), 서버(EC2) , 데이터베이스(RDS) 로 이루어져 있다.

 

S3비정형 데이터(html 파일, 사진파일, 문서)를 저장할 수 있다. 그래서 우리는 S3에 프론트 부분을 저장하여 서버로 요청을 할 수 있다.

 

EC2 말 그대로 서버를 실행시 킬 수 있는 컴퓨터 한대를 빌리는 것이다. 로컬에서 동작하는것 처럼 스프링부트를 실행시켜 서버를 열어 서블릿 요청을 받을 수 있다.

 

RDS비정형 데이터를 저장한다. AWS에서 제공하는 데이터베이스 기술로 로컬에서 사용하는 데이터베이스를 이용하는 것처럼 디비설정이 가능하고 관계형 데이베이스로만 설정이 가능하다.

 

 


배운 내용

 

먼저 aws 에서 ec2 연결을 하기위한 몇가지 방법이 있는데 우리는 세션 매니저 방식으로 연결을 하였다.

그러면 CLI 환경이 나오고 우리가 로컬에서 터미널을 이용하듯이 똑같이 aws에서도 이용을 할 수 있다.

그래서 먼저 javajdk-11 을 설치하여 자바 환경을 만들어 주었다.

git에 작성된 코드를 클론하였다.

그리고 java 서버 실행 명령을 통하여 서버가 실행이 되었다.

(서버가 실행이 되면서 ec2환경에서 다른 작업을 할 수 있도록 백 그라운드 실행도 셸 스크립트를 통하여 가능 하였다.)

 

그리고 s3 에 저장된 html 문서들이 서버와 연동을 하기위해서는 먼저 로컬에서 적절한 파일들을 만들어서 s3에 업로드를 해줘야한다. (이러한 과정에서는 s3에 적용할 파일의 환경변수에 서버 주소(ec2의 주소)를 설정해주고 빌드를 해준다) 그리고 빌드안에 있는 파일(html등등)을 s3에 만든 파일을 업로드를 한다. (또 s3에서 정책 설정하고 정적파일 접근 설정해주고 등등 해주었었다.) 

 

마지막으로 RDS의 설정은 자동으로 되어있어서 서버에서 연동만 진행해 주었다. ec2 환경에서 프로젝트의 안에 있는 properties에 있는 환경변수를 변경해 줘야됬다. 변경이 필요했던 부분은 RDS랑 연동해야 됬기때문에 RDS Mysql 마스터 사용자 이름 , Mysql 마스터 암호, 그리고 S3 엔드포인트 주소를 변경해주고 다시 빌드해주었다.

 

그러고 나서 S3에서 HTML 파일을 열고 로그인 동작을 수행하면 RDS에 있는 데이터를 바탕으로 로그인이 잘 되는걸 확인 할 수 있었다. 


 

개념

 

클라우드 서비스의 종류

https://blog.codef.io/cloud_service/

IaaS -> SaaS 로 갈수록 서비스로 제공되는 부분들이 많아지고 그만큰 비용이 많이 든다.

코드스테이츠에서 학습한 서비스의 종류는 직접 서버환경에서 직접 런타임하고 직접 자바를 설치하였고 서버와 스토리지 등등만 제공받았기 때문에 IaaS를 제공받아 사용한 것이다.

 

클라우드 시스템에서 서버를 확장하는 방법

 

1. 스케일업 ( 서버의 용량을 키운다 )

서버를 추가하는게 아니고 용량을 늘리기 때문에 업그레이드가 간편하고 데이터 일관성 문제가 발생되지 않는다.

 

 

2. 스케일아웃 ( 서버의 개수를 늘린다 )

다른 서버를 추가하는 작업이기 때문에 데이터 일관성 문제가 일어나기도 한다. 하지만 서버가 여러대이기 때문에 안정성면에서는 스케일업보다 우수하다.

 

최근에는 Scale Out 방식이 더 많이 사용되고 있습니다. 이는 클라우드 컴퓨팅과 분산 시스템 기술의 발전으로 인해 서버 자원을 더욱 쉽게 확장할 수 있게 되었기 때문입니다 - Chat GPT -

댓글