AWS Solutions Architect 교육과정 3일차
AWS Solutions Architect 교육과정 3일차 정리
본 글을 2015년 한국 AWS에서 교육받은 내용을 메모해 뒀던 글을 다시 정리하여 올린 글입니다.
2015년 교육 자료이므로 현 시점(2019년)과는 차이가 있을 수 있습니다.
용어, 한글표기 등은 시간 관계상 맞추지 않았습니다.
Cloud 관리
아마존을 수동 구성하면 힘들다. 재현 할 가능성이 높음
DIY 스크립트? 커스터마이징이 좋지만 여러 문제가 있음(유지보수, 종속성 등등)
- Cloud Formation
- 탬플릿(json, 리소스를 코드로 취급하여 저장) -> CloudFormation -> 스택(클라우드 포메이션에서 생성한 리소스 모음)
- 단점: 배우기 어렵다.
- json으로 작성해야 하므로 여러 편집기가 지원됨 (VisualOps, CloudFormation Designer)
- 일반적으로 쓰이는 템플릿이 공유되고 있음
- 탬플릿을 실행시키면 스택이 만들어짐(가능한 병렬로 수행됨)
- 탬플릿은 리전이나 계정에 종속되면 안되므로, 고유값(키, 이름)등은 parameter로 정의해두면 탬플릿 실행시 입력을 받음
- AMI의 경우 리전에 종속되므로 다른 리전에서는 같은 종류의 AMI일지라도 ID가 다름 -> Mapping값으로 경우에따라 사용되는 값을 다르게 할 수 있음
- 경우에 따라 파라메터를 살짝 바꿔주도록 세부조건을 지정해 줄 수 있음
- DependsOn을 써서 순서대로 만들도록 지정할 수 있음
- WaitCondition으로 대기시키고 조건이 충족되면 진행되게 설정 가능
- Lamda를 통해 AWS외 리소스도 체크해가면서 진행 가능
- 기존 배치된 서비스를 CloudFormation으로 전환도 가능(Cloud Former), 그러나 살짝 모자르기 때문에 정리필요
- 애프리케이션 관리 서비스
- ElasticBeanstalk(원클릭 런칭 서비스), OpsWorks(엄청 많은 양의 infra관리, chef사용가능)
- CloudFormation, EC2는 diy급
관리형 서비스
- SQS
- 병목현상을 막고 소결합을 위해 큐를 사용
- 성능은 카프카가 갑이지만 AWS를 쓴다면 SQS권장
- 분산시스템이라서 FIFO를 완전하게 보장하지 못함(최대한 지켜주려고 한다… 만약 순서를 꼭 지키겠다면 어플리케이션단에서 처리 필요)
- 최소한 1회 = 무조건 1번은간다, 2번갈수도! 어플리케이션단에서 처리 필요
- 위 두문제를 해결하기위해서는 걍 카프카 쓰세요 ㅠ 개선중
- 메시지가 바로 안읽어와 질 수 있으므로 롱 폴링 권장
- 큐에서 dequeue를 할때 자동으로 삭제하지 않음 = 명시적으로 삭제해야함
- 큐의 데이터를 누군가 가져가면 인비저블 처리, 인비저블일때는 다른 누군가가 가져가지 못함
- 오랜시간동안 삭제되지 않고 인비저블이 유지되면 비저블로 복구됨 -> 복구된 것을 누가 또 가져가면 첫 인스턴스가 삭제 불가(권한 없음), 즉 실패처리해야함
- 이렇게 구성한 이유는 EC2가 오토스케일링 되면서 사라지면 유실 될 수 있음을 막기 위함
- 큐의 갯수를 통해 오토 스케일링을 할 수 있음, 큐가 비었을때는 인스턴스를 0개로 할 수 도 있으니깐, 오토스케일링 그룹의 최소 인스턴스가 0을 허용하는 것임
- 데드레터큐는 따로 보관하고, 사용자가 처리해주면 됨
- 기존의 SQS->EC2같은 작업을 Lambda가 처리해줄 수 있음(단 짧고 간단한거: 썸네일 생성등)
- SNS
- 알림을 설정 : 이메일, HTTP/s, SMS, AmazonSQS, 푸시
- 최대 256Kb까지 지원하지만(64kb로 4번 보내므로 요금 많이 나옴)
- SMS나 푸시의 경우 요금이 비싸다
- S3의 경우 Event Notification을 SNS로 보낼 수 있음, SNS 에서 SQS로 http를 보내고 SQS에서 작업처리 가능
- 이렇게 복잡하게도 할 수 있지만 S3를 바로 lambda로 처리해버리는 것도 가능
- SNS가 다른데로 보낼때는 받는 사람이 승인해야 함
- SQS의 경우 ARN을 등록해야 SNS를 보낼 수 있음
- e-mail은 받기전에 동의 해야함
- 비즈니스 용으로 쓸 수도 있지만 보통은 운영중 이슈 확인용으로 쓰는게 좋지 않을까?
- SWF
- 복잡한 업무를 처리해주는 작업 처리자
- 정확히 한번 처리함
- 롤 폴링 - API를 통해 작업상태 추적 가능
- SES
- 대용량 이메일 전송 서비스
- 처음엔 발송이 제한이지만 스팸이 아니라고 판단되면 점차 발송 횟수 증가가능
- 엔터프라이즈는 걍 대량전송 가능
- CloudSearch (검색 엔진 같은거)
- 간편하게 검색기능을 쓸때 사용 가능
- 검색은 인덱스를 기반으로 하고 결과는 원본을 가르킴 : 검색 트래픽이 커지면 인스턴스를 복제해서 검색 하게끔 하고, 데이터가 커지면 파티션을 늘여서 검색가능하게 함
빅데이터, 대용량 데이터 처리
- Amazon EMR
- 관리형 Hadoop
- 참고 (Redshift는 OLAP을 이용한 BI분석)
- EMR과 Redshift조합을 많이 씀
- 반구조, 구조화 되지 않은 데이터를 처리할때 사용 : 데이터의 차원을 좀 줄일때 사용
- Redshift
- 페타바이트단위 관리형 데이터 웨어하우스 서비스
- 관계형 DB랑 달리 엄청 빠른 액세스가 가능하지만 분석용(DB로는 쓰지 말라네)
- Kinesis
- 스트림 데이터 처리, 시간당 수백테라바이트 처리
- 스트림 데이터를 받아서 샤드 단위로 파티션키를 넣어 정리
- 저장 단위는 샤드, 초당 10Mb처리 : 처리량을 늘이려면 샤드를 증가하면 됨
- 앱이라 부르는 곳에서 처리(MapReduce작업)
- 리포트를 보여줄 수 있음(리전기반이지만 Global처럼 사용됨)
기타
- Cognito : 모바일 환경에서 적절한 솔루션 : 사용자 인증, 데이터 싱크
- Mobile Analytics
- Elastic Transcoder : S3에 올리면 자동으로 인코딩해주는 서비스 : 건바이건이라서 비쌈
- Dynamic DynamoDB : Open Source Third party : dynamoDB 를 오토스케일링 해줌(증가 무제한, 감소 일 4회)
Disaster Recovery
- 내결함성(fault tollerent)
- 높음 : 멀티 AZ
- 아주높음 : 교차 리전(스냅샷, AMI 복사 - 데이터 계층을 비동기식 복제(동기식 복제는 거의 불가))
- 고가용성(High availability) : 서버 중지가 발생해야 한다면?
- S3를 통해 정적 웹사이트 사용
- DNS장애 조치를 통해 Route53으로 장애안내 페이지로 연결
- RTO / RPO
- RTO : Recovery time objective : 장애시 얼마나 빨리 복구되나?
- RPO : Recovery point objective : 장애시 최근 데이터가 손실일어나는 구간을 줄이자
- DDoS 공격을 막는 기술은 전반적으로 적용되어 있음
- ElasticBeanstalk에도 적용됨
- 가장 best는 CloudFront (동적인 데이터에도 좋음)
- 장애를 고려한 설계
- 단일 장애 지점을 제거(복수 구축)
- 모든 기능은 장애가 발생한다는 것을 가정하여 구축
- 복구 프로세스! (백업은 다들 하지만 복구는 잘 안하더라) : 복구 프로세스가 정상 동작하는지 꼭 확인(테스트) 필요
- 큰거 2개보다 작은거 4개가 낫다
- 백업 및 복구
- S3를 쓰면 좋음 (Import/Export 기능)
- Pilot light? : 안쓰는 EC2를 다른 리전에 구축해두고, 데이터볼륨은 적은 볼륨으로 다른 리전에 구축 - 문제시 Route53같은걸로 돌림
- 완정 동작 저용량 스탠바이 : Route53에서 %로 분배하도록(LBR?) 구성, 스탠바이서버에 저용량으로 동일하게 동작하게 구성하여 본서버가 터져도 약간 버티는 동안 용량을 확장(껏다 켜도 되고 AutoScaling해도 되고… 등등) : 평소에도 체크해봐야 함
- 다중사이트 액티브 : 돈이 많이 들지만(Utilization은 50%를 넘지 못함) 100%안전하므로 크리티컬할때
- Amazon Workspace를 통해 관리 가능
- 아마존 복구의 장점: 저렴하게 테스트 가능
-
점진적으로 개선하세요: 백업 > 복구 > 파일럿 라이트 > …
- HA 데이터 베이스 패턴
- M - S구성, 추가로 Read Replica를 구성하면 좋다.
- S를 M으로 변경 가능하고(동일 DNS), Read Replica도 S나 M으로 승격 가능
- HA proxy를 쓸 수도 있지만, 보통 M/S는 endpoints가 동일하지만, Read Replica는 별도의 endpoint를 갖고 있음
- R-R는 모두 endpoint가 다르므로 앞단에 Route53을 써야함
- RDS는 IP가 자꾸 바뀌므로 반드시 DNS 를 쓰세요.
- M - S구성, 추가로 Read Replica를 구성하면 좋다.
가격 고려
- 예약 요금을 쓰면 좋다
- 예약된 인스턴스를 마켓플레이스에서 팔 수도 있고 살 수도 있음(좀 더 싸게 가능)
- 탄력적으로 운영하라
- 스팟도 적절히 사용하면 좋다
- 계정을 분리하고 한명에게 몰아서 결제가능 : 계정모으면 통합해서 청구되므로 할인도 가능
- 예약 인스턴스를 공유할 수 있음
정리
교재 중심으로 공부하면 됨
살짝 기본적인 아키텍처
- Route53 -> CloudFront -> IGW -> VPC -> …