AWS Back - 04/26

박연주·2022년 4월 25일
0

AWS

목록 보기
2/6

Monolithic vs MSA

Monolithic

  • 프로젝트에 관한 모든 부분을 하나의 서버에 배치하는 방법

MSA(Micro Service Architecture)

  • 단순하게는 프론트, 백엔드를 물리적으로 다른 서버에 배치하는 방법
    ex) 프론트 - S3에 배치 / 백 - EC2에 배치
  • 단일 프로그램을 각 컴포넌트 별로 나누어 작은 서비스의 조합으로 구축하는 방법

아마존닷컴은 웹서버와 데이터베이스 백엔드의 2tier기반에서
서로 다른 애플리케이션 기능을 제공하는 분산 서비스 플랫폼으로 변화함.


백엔드

네트워크 1 - VPC, 서브넷, 라우팅 테이블, 인터넷 게이트 웨이


VPC(Virtual Private Cloud : 격리형 클라우드 리소스)

  • AWS 클라우드내의 네트워크로, 사용자가 논리적으로 네트워크를 만들어서
    서비스에 적용할 수 있음.
  • IPV4 CIDR : IP의 범위를 지정하는 방법
    ex ) 예를 들어 172.32.0.0/16 이라고 하면 IP의 범위가
    172.32.0.0 ~ 172.32.255.255 지정되게 됩
  • Amazon VPC 설명서

서브넷

  • 연결되는 서버 컴퓨팅 자원들에 내부 IP를 할당

라우팅 테이블

  • 연결된 서브넷들을 라우팅
  • Routing : 패킷의 전송 경로를 지정

Internet Gateway

  • 인터넷과 VPC를 연결. 인터넷 게이트웨이가 연결된 VPC만이 외부와 통신이 가능
  • gateway : 현재 사용자가 위치한 네트워크(정확히는 세그먼트-segment)에서 다른 네트워크(인터넷 등)로 이동하기 위해 반드시 거쳐야 하는 거점



네트워크 2 - 보안그룹, 탄력적 IP

보안그룹

  • 방화벽과 비슷한 역할. 보안그룹과 연결된 인스턴스들의 접근을 제안
  • 백엔드의 포트를 구성하면 보안그룹이 생성됨.(S3, cloudfront 포트x)
  • 인바운드 규칙 : 어떤 리소스에 접근하려할 때
  • 아웃바운드 규칙 : 밖으로 어떤 api를 호출할 때
  • 예) 소스 ID가 같은, 연결되어있는 리소스들만 VPC에서 통신이 되도록 함.
    -> 모두 통신가능하게 하려면 CIDR를 0.0.0.0/0 으로 바꿔줌.

탄력적 IP

  • 인스턴스에 고정된 IP를 부여할 수 있게 해줌
  • EC2 인스턴스 IP는 중지 후 다시 실행하면 IP가 바뀜
  • 탄력적 IP 주소 할당 -> 탄력적 IP 주소 연결 -> 인스턴스에 연결(고정 IP 연결됨.)

----------- AWS -----------------

프론트백엔드데이터베이스
S3EC2RDS
IAMELBElastiCache
CloudfrontElastic BeanstalkElasticSearch Service

----------------------------------


EC2(Elastic Computer Cloud)

홈페이지를 사용할 때 쓰는 서버 (클라우드의 가상 서버)
AMI(Amazon Machine Image) : 인스턴스에 설치할 리눅스나 우분투같은 os 이미지

생성
1. AMI 선텍 : Ubuntu Server 18.04 이미지를 선택
2. 인스턴스 유형 선택 : t2.micro를 선택
3. 보안그룹 구성 : SSH 포트인 22 포트는 열려있음
4. 새 키 페어 생성
(인스턴스가 생성된 후 SSH 를 이용해서 인스턴스에 접속하려고)

EC2 파이썬 배포하기
AW와 서버 연결

  • 포트 열기 : 보안 - 인바운드 규칙 편집

ELB(Elastic Load Balancing)

EC2+ELB 문서

  • 여러대의 EC2를 묶어서 사용하기 위한 서비스
  • 서비스 중 EC2의 성능이 부족한 경우 인스턴스 추가 가능
  • 이미지 : EC2의 파일 디스크에 있는 것을 그대로 이미지로 저장 해놓기 (다음 EC2에서 사용가능, 자동으로 로드밸랜서에 추가하기 쉽게)
  • scale out : ec2가 늘어남

생성
1. application load balancer
2. ipv4, 리스너 - http, 80
3. 가용영역 : a,c or b,d
4. 보안그룹 - 새 보안 그룹 생성, 라우팅 - 5000
5. target 그룹 만들고 연결
6. DNS 이름 주소로 브라우저 접속 확인


EC2 수동 추가
EC2를 만들고 target group에서 직접 추가

EC2 자동 추가

  1. AMI 만들기 (이미지 생성)
  2. Auto Scaling 시작구성 만들기
	이름, AMI, 인스턴스 유형, 보안그룹(기존 EC2), 키페어(기존)
  1. Auto Scaling 그룹 만들기
	시작 구성으로 전환, 서버넷(2개), 고급옵션 - 기존 로드밸런서에 연결,
  1. 인스턴스 Health 체크
	- target groups 리스트 확인 (추가된 인스턴스가 unhealthy 상태라면)
	- 인스턴스로 접속해서 문제 원인 찾기
	- 터미널에서 해당 인스턴스를 ssh -i 로 연결하고 app.py가 작동하는지 확인
  	  (nohup python app.py &  -> ps -ef | grep python)
	- app.py가 돌아가면 healty로 변경됨.

Elastic Beanstalk

ELB + Auto Scaling + EC2를 한번에 관리할 수 있는 서비스
환경에는 신경쓸 필요없이 간단한 옵션만 조절, 어플리케이션만 배포하면 되는 형태

생성
이름, 플랫폼(python), 생성확인

구성 변경해보기
변경사항을 바로 보기 위해 용량 - 인스턴스 - 최소 개수를 2개로 만들어
인스턴스 수가 늘어나는지 확인하기

Github Action을 통한 자동배포


+ 간단정리

  • EC2 : AWS의 기본적인 컴퓨팅 서비스
  • ELB : EC2 리소스를 효율적으로 사용하게 해줌
  • Auto Scaling : ELB와 EC2의 연결을 좀 더 효율적으로 관리할 수 있게 해줌
  • Elastic Beanstalk : 인프라 관리의 어려움을 줄이고 개발에 집중할 수 있는 환경을 만듦
profile
하루에 한 개념씩

0개의 댓글