학원에서 책을 나눠줬다, 얼마 지나지 않아 있을 aws 수업을 위해서 나눠신 듯 했다
책 내용을 살펴보니, 자격증 공부를 할때 살펴봤떤 내용들이 요약적으로 적혀있어서, 복습하는데 좋을것 같았다
그리고, 지금 구성하고 있는 웹앱 구성에도 도움이 될것 같아서 내용위주로 먼저 정리하고, 실습을 쭉 이어서 진행해보려 한다
클라우드를 왜 써야 하는가
=> 유연성, 확장성, on - demand 과금방식을 통한 비용절감
● ALB
: 서버 안에서 똑같은 애플리케이션을 여러 프로세스로 만들어 실행해놓고 외부에서 들어온 요청을 프로세스중 하나로 보내주는 역할
=> 한 서버에 들어온 여러개의 요청을 동시에 처리 + 서버 자원을 효율적으로 사용이 가능
● 웹서버
: 웹 프로토콜 http https 의 요청을 받고 정적인 응답을 해주는 서버
=> 코드를 실행해 동적인 응답을 해줄 수 없음
apache
● 웹 애플리케이션 서버 web application server WAS
: 요청을 받고 코드를 실행해 동적인 응답을 만들어주는 역할
apache tomcat / JBoss / pushion passenger -> 노드, 파이썬, 루비,meteor
● auto scaling - 대량의 트래픽에대한 처리 / 장애에 대한 fail over
=> 자동 다중 서버 서비스
auto scaling group
=> 같은 사양, 같은 환경, 같은 코드를 가지고 있는 똑같은 ec2 인스턴스들의 묶음 -> AMI 이미지를 통해서 손쉽게 생성 가능
=> 인스턴스의 수를 자동으로 늘리거나 줄여줌 scale in / out => 알림 까지 가능
과정
=> 생성하기 위해 자동으로 생성할 인스턴스 고르고
=> 그 인스턴스의 스냅샷을 이용해서 => 이미지 생성 => 시작 템플릿으로 사용
=> autoscaling group 생성
** 주의할점
해당 서버를 autoscaling에 사용할 이미지를 만들었으면, 스케일링이 될때 같은 환경의 서버가 작동되기 위해서 해당서버는 되도록 사용하지 않고, 변경점이 있을때만 새로 이미지를 배포하는 식으로 사용해야함
● ELB elastic load balancing
로드 밸런서도 일종의 서버 but 직접 ssh를 통해서 접근할 순 없음
=> 대상 그룹으로는 인스턴스 자체와 auto scaling 그룹을 가질 수 있음
==> 포트에 따라서 대상을 다르게 밸런싱할 수도 있음
ex)
80 443 => A
53 => B
● 장애조치 아키텍쳐 fail over
=> 시스템 하나가 죽었을 때 예비 시스템을가동하여 다운 타임을 최소화 하고 서비스의 연속성을 지키는 것
=> 'auto scaling / 로드밸런서' 들을 사용해서 구성할 수 있음
로드 밸런서 -> 로드 밸런싱하고 있는 서버들의 상태를 계속해서 확인하기 때문에 => 즉각적 대처가 가능하고 => 서버의 상태가 올바르지 않으면 트래픽을 보내지 않기 때문에 => 장애조치가 가능함
● DNS
도메인에 연결된 웹 서버들의 ip를 저장하고 있고, 쿼리/요청이 들어왔을 때 이 주소를 반환해주는 서버 - route 53
SSL/TLS https => aws에서 관련된 인증서를 무료로 제공하고 있다고 책에 나와있음 -> 찾아봐야겠다
============================================================================================
AMI 이미지 방식은 컴퓨터 하나를 통째로 백업한다고 생각하면 되고, 스냅샷은 하드디스크 내용물만 백업하는 것으로 이해하면 된다. 물론 EC2와 관련된 EBS 여러개를 백업할수도 있다.
AMI 인 경우에는 바로 EC2 인스턴스를 생성할 수 있고,
Snapshot 인 경우는 Snapshot 을 이용해 AMI 를 생성하는 단계를 거쳐야한다는 차이점이 있다.
스냅샷은 EBS의 내용을 백업한 데이터라 직접 바로 인스턴스를 만드는게 불가능 하다.
============================================================================================
코드 배포
●무중단/중단 배포
=> 서비스를 중단하지 않고 / 중단하고 배포하는것 -> 업데이트 / 점검
==> 사용자 입장에서는 무중단이 당연히 좋지만 무중단이 꼭 좋은것은 아니다
==> 너무 큰 비용의 발생 / 코드나 스키마의 버전 교체 등등 => 중단이 필요한 경우가 있음
a => a + b => 무중단이 상관없음
a => a' or a' + b => 중단을 사용해야할 수도 있음
=> 애초에 무중단 배포의 원칙이고 / 신버전이 서비스에 동시에 적용될때 문제가 없어야함
●현재 위치 배포
무중단 배포를 하기 위한 방법
로드밸런싱 되고 있는 서버들에 대해서 일부(예를 들어 절반) 서버를 로드밸런싱 그룹에서 제외하고, 배포를 진행 => 나머지 절반은 문제없이 서비스 진행중
=> 배포가 완료된 서버로 서비스를 진행 -> 나머지 절반의 서버에 배포를 진행
==> 로드밸런싱 대상에 모든 서버를 올림
=> 새로운 인스턴스를 생성하지 않기 때문에 비용적으로나 시간적으로나 효율적이지만, 배포를 진행하는동안 인스턴스(서버)의 수가 줄어들기 때문에 트래픽에 대해 조심해야함
●블루/그린 배포
무중단 배포를 하기 위한 방법
=> 2개의 그룹을 가지고 진행
=> 여기서 말하는 그룹은 대상그룹 / auto scaling 둘다 될 수 있음
-서버단위
로드 밸런서 -> 블루 그룹만을 통해서 서비스하는 중
블루그룹 => 현재 버전이 배포된 그룹
그린그룹 => 블루 그룹과 똑같은 수의 서버 인스턴스를 생성 => 새로운 배포를 적용
====> 블루 그룹을 통해서 서비스 하는 중
그린그룹의 배포가 끝나면 로드밸런서에 그린그룹도 추가
=> 블루 그룹을 로드밸런서에서 제거
==> 블루 그룹의 인스턴스(서버)를 제거 -> 그룹의 제거 x / 인스턴스를 제거
==> 모든 작업 완료
==> 다음 배포가 있을 경우에, 반대로 진행해주면 됨
장점
: 구 / 신 버전이 동시에 존재하는 시간이 짧음
=> 새로운 버전을 다 준비한 후에, 로드밸런서에 붙여주기 때문에
: 롤백을 굉장히 빠르게 할 수 있다는 것
=> 구 / 신버전을 그룹으로 나누어 놓았기 때문에, 신버전에 문제가 생길시 바로 구 버전으로 롤백할 수 있음
: 서비스 하는 인스턴스(서버)의 수를 줄이지 않아도 됨
=> 서비스를 하는데 트래픽에 대한 부담이 없음
+-----------------------+----------------------+
| load balancer |
+-----------------------+----------------------+
|
|
↙
↙
↙
+-------------------------------+----------------------------+
| BLUE | GREEN |
+-------------------------------+----------------------------+
| Current Production | Next Release |
| Version: 1.0 | Version: 1.1 |
| Status: Live | Status: Testing |
| Last Deployed: Date | Last Deployed: Date |
| Traffic: 100% | Traffic: 0% |
+------------------------------+------------------------------+
=> 원래 버전으로 서비스를 하고 있다가
=> 최신 버전에 대한 배포가 끝나면
+-----------------------+----------------------+
| load balancer |
+-----------------------+----------------------+
|
|
↘
↘
↘
+-----------------------------+----------------------------+
| BLUE | GREEN |
+-----------------------------+----------------------------+
| Current Production | Next Release |
| Version: 1.0 | Version: 1.1 |
| Status: Live | Status: Testing |
| Last Deployed: Date | Last Deployed: Date |
| Traffic: 100% | Traffic: 0% |
+----------------------------+------------------------------+
=> 최신 버전으로 서비스를 함
=> 이런식으로 서버 전체를 하나의 그룹으로 묶어서 배포작업을 진행
=> 여러개의 인스턴스를 사용한다면 이런 방식으로 해야함
-서버내
=> 많지않은 양의 인스턴스(1-2개)를 사용한다면 서버내에서 해도됨
=> 서버단위로 그룹화 하는것이 아니라 => 포트로 구분함
'AWS > aws 서비스 사용해보기' 카테고리의 다른 글
예상치 못한 비용 ec2-other 와 그외 (0) | 2023.12.26 |
---|---|
책 : 서비스 운영이 쉬워지는 aws 인프라 구축 가이드 _ 2 (0) | 2023.10.13 |
IAM 사용자(관리용 사용자) 사용해보기 (0) | 2023.10.10 |
ec2 서버 - EIP 비용 부과 (0) | 2023.09.08 |