Education*
Devops
Architecture
F/B End
B.Chain
Basic
Others
CLOSE
Search For:
Search
BY TAGS
linux
HTTP
golang
flutter
java
fintech
개발환경
kubernetes
network
Docker
devops
database
tutorial
cli
분산시스템
www
블록체인
AWS
system admin
bigdata
보안
금융
msa
mysql
redis
Linux command
dns
javascript
CICD
VPC
FILESYSTEM
S3
NGINX
TCP/IP
ZOOKEEPER
NOSQL
IAC
CLOUD
TERRAFORM
logging
IT용어
Kafka
docker-compose
Dart
AWS Well-Architecture Framework
Recommanded
Free
YOUTUBE Lecture:
<% selectedImage[1] %>
yundream
2022-10-29
2022-09-12
1722
# AWS Well-Architecture Framework AWS는 100여개가 넘는 수많은 서비스들을 제공한다. 사용자는 이를 서비스를 자유롭게 엮어서 최적화된 애플리케이션을 개발 할 수 있다. 그 조합의 수는 무한하다고 할 수 있다. 하지만 효과적인 조합은 있는 법이라서 AWS는 AWS Well-Architected 정보를 제공하고 있다. 사용자는 AWS에서 제한한 Well-Architected 정보를 이용해서 빠른시간에 효과적인 시스템을 구축 할 수 있다. 여기에서는 AWS Well-Architecture Framework 에서 제안하는 핵심원칙을 소개하고 이를 만족하는 디자인을 제안한다. ## AWS Well-Architected 및 6대 원칙 1. 운영 우수성 원칙 : 개선하기 위해서는 관리해야 하고 관리하기 위해서는 **측정**해야 한다. 운영 우수성 원칙은 시스템을 실행 및 모니터링하고 프로세스와 절차를 지속적으로 개선하는데 중점을 준다. 여기에는 변경 자동화, 이벤트 대응 및 일상적인 작업 관리를 위한 표준정의가 포함된다. 2. 보안 원칙 : 보안원칙은 정보와 시스템을 보호하는데 중점을 둔다. 여기에는 데이터의 기밀성 및 무결성, 사용자권한 관리, 보안 이벤트 감지를 위한 제어 설정이 포함된다. 3. 안전성 원칙 : 의도한 기능이 의도한 대로 작동하고 실패로 부터 신속하게 복구하는 방법에 중점을 둔다. 주요 주제는 분산 시스템 설계, 복구 계획 및 변화하는 요구사항에 대한 적응이 포함된다. 4. 성능 효율성 원칙 : IT 및 컴퓨팅 리소스가 조화를 이루고 간소화되어서 할당하는데 중점을 둔다. 주요 주에로 워크로드 요구사항에 최적화된 리소스 유형 및 크기의 선택, 성능 모니터링, 비즈니스 요구사항 변화에 따른 효율성 유지가 포함된다. 5. 비용 최적화 원칙 : 비용 최적화 원칙은 불필요한 비용 발생을 방지하는데 중점을 둔다. 주요 주제로는 시간 경과에 따른 지출의 이해와 자금 할당 제어, 올바른 유형 및 수량의 리소스 선택, 초과지출 없이 비즈니스 요구사항을 충족하는 확장이 포함된다. 6. 지속 가능성 원칙 :지속 가능성 원칙은 클라우드 워크로드 실행이 환경에 미치는 영향을 최소화하는데 중점을 둔다. 지속 가능성을 위한 공동책임 모델, 효과적인 리소스의 사용과 같은 주요 주제를 다룬다. ## AWS Well-Architected 디자인 원칙 ### scalability * 수평적 확장 : 리소스의 수를 늘려서 늘어난 요청을 처리한다. Scale In / Scale Out 방식이라고 한다. * 수직적 확장 : 개별 리소스의 사양을 증가 한다. 즉 더 강력하고 많은 CPU, 더 많은 Memory를 장착하여 늘어난 요청을 처리한다. ![horizontal scaling & vertical scaling](https://docs.google.com/drawings/d/e/2PACX-1vQCy_mhNOs957XpSAUpbD6WPQcGnOcXv9JpgmGkAiqpqfThQ-O_DZrFyjSgAnkBLVzgRD6XX1ziGjHk/pub?w=763&h=498) * Stateless application인 경우 수평적 확장을 사용한다. 예를 들어 HTTP 기반의 웹 서비스는 Stateless이며 ELB(로드밸런서)를 이용하여 수평적 확장을 한다. * Stateful application인 경우 수직적 확장을 사용한다. 데이터베이스의 경우 사양을 높여서 늘어난 요청을 처리한다. (물론 Read replica를 이용하여 수평적 확장을 하기도 한다. 대체적으로 그렇다는 얘기다.) ### 고정 서버 대신 일회용 리소스 * 컴퓨팅 리소스를 인스턴스화 한다 : 구성 및 코드와 함께 새 리소스가 설정되고 배포된다. 예를들어 컨테이너 기반으로 배포 할 경우, 서버 리소스대신 일회용 리소스인 컨테이너가 배포된다. * 코드형 인프라 : AWS 리소스는 프로그래밍 가능하다. 소프트웨어 개발 기술을 사용하여 전체 인프라의 재사용, 유지관리, 확장 및 테스트 가능하게 만들 수 있다. ### 자동화 * 서버리스 : 서버리스는 코드 배포의 자동화로 애플리케이션을 배포한다. 배포, 모니터링, 확장, 장애조치등 모든 것을 AWS가 대신 관리한다. * 인프라 관리와 배포 :AWS는 리소스 프로비저인, 로드밸런싱, Auto Scaling 및 모니터링과 같은 세부 정보를 자동으로 처리하므로 리소스 배포에 집중 할 수 있다. * 모니터링 경보 및 이벤트 : AWS 서비스는 리소스를 모니터링하며, 지표가 특정 조건을 만족하면 자동으로 이벤트를 시작한다. 예를들어 CPU가 평균 80%이상을 소모한다면 이벤트를 발생시키고, Auto scaling(Scale out) 을 진행한다. ### 느슨한 결합 * Interface : 다양한 구성요소가 gRPC, RESful 과 같은 특정 기술에 얽매이지 않는 인터페이스를 통해서 상호작용 할 수 있도록 하여, 시스템의 상호 종속성을 줄인다. * Service discovery : MSA와 같이 소규모의 서비스 그룹의 집합으로 구성된 시스템에서, 각 서비스는 다른 서비스에 대한 사전 지식 없이도 연결해서 사용할 수 있어야 한다. Service discovery를 이용하여 각 서비스는 주변의 다른 서비스를 찾을 수 있다. * 비동기 : 즉각적인 응답이 필요하지 않은 경우, 요청을 저장하고 분배하는 **메시지 큐**를 이용해서 서비스를 통합 할 수 있다. ![Loose coupling](https://docs.google.com/drawings/d/e/2PACX-1vQbt7OGtwqvDTXW17NW01zpMPae7Mz8_bTnnUMHDzXdQpYdBSwOGUzKWfPouHih2_OCkVXLcOD48PUW/pub?w=783&h=345) ### 데이터베이스 * 서비스는 하나 이상의 데이터 모델로 구성이 된다. 각 워크로드에 적합한 데이터베이스 기술을 선택한다. * 관계형데이터베이스는 강력하고 사용하기 쉬원 질의어, 유연한 인덱싱 기능, 강력한 무결성 제어를 제공하며, 빠르고 효율적인 방식으로 여러 테이블간 데이터를 조합할 수 있다. * **NoSQL 데이터베이스**는 수평적으로 원할하게 확장되는 보다 유연한 데이터 모델을 제공한다. 그래프, Key-Value, JSON 문서를 비롯한 다양한 모델을 사용하여서 개발 용이성, 유연한 확장과 고가용성, 복원력등을 제공한다. * **데이터웨어 하우스**는 대용량의 데이터 분석 및 보고에 최적화된 데이터베이스다. * **그래프 데이터베이스**는 그래프 구조를 쿼리 할 수 있다. 소셜 네트워크와 같이 관계가 중요한 서비스에서 사용 할 수 있다. ### 데이터 레이크 * 대량의 데이터를 중앙 위치에 저장하여 조직 내의 다양한 그룹에서 분류, 처리, 분석 및 사용 할 수 있도록 하는 접근 방식이다. * AWS S3는 데이터 레이크를 지원하는 주요 저장소로 아래와 같은 기능을 지원한다. * 중앙 집중식 데이터 아키텍처 * 컴퓨팅 및 데이터 처리에서 스토리지 분리 : 기존의 Hadoop 및 데이터 웨어하우스 솔류션은 스토리지와 컴퓨팅이 밀접하게 연결되어 있어서 워크플로우를 처리하기가 어려웠다. S3는 컴퓨팅과 분리되어 있으므로 비용효율적으로 처리 할 수 있다. * 표준화된 API : RESTful API를 이용하여 Hadoop를 비롯한 타사 소프트웨어에 연결 할 수 있다. * 정형, 반정형 및 비정형 데이터에 대한 확장성 및 지원 * 비용절감, 내구성 및 가용성을 위한 스토리지 클래스의 지원 ### 단일 실패지점의(Single Points of Failure) 제거 * 이중화 : 리소스와 애플리케이션을 이중화 하여, 하나의 리소스 혹은 애플리케이션에 장애가 생기더라도 계속 서비스 할 수 있게 한다. 이중화는 Active / Active model 과 Active / Standby model이 있다. * 실패 감지 : 실패를 감지해서 장애가 생긴 리소스에 요청을 보내지 않아야 한다. 이를 위한 로그 수집과 모니터링이 필요하다. * 데이터 내구성 * 동기식 복제 : 기본저장소와 복제 저장소 모두에 데이터가 성공적으로 저장된 후에만 트랜잭션을 승인한다. 기본 저장소에 장애가 발생하더라도 완전한 무결성을 보장한다. * 비동기식 복제 : 복제 지연이 발생하는 대신에 기본 저장소를 복제 저장소에서 분리한다. 복제에 지연이 발생하기 때문에 기본 저장소의 변경 사항이 복제본에 즉시 반영되지 않는다. 보통 궁극적 일관성(Eventual Consistency)를 보장한다. * 쿼럼 기반 복제 : 성공적인 쓰기 작업에 참여하는 최소 노드수를 정의하여 동기 및 비동기 복제를 결합한다. * 자동화된 다중 데이터 센터를 통한 복원력 확보 : AWS에서 제공하는 가용영역(Availability Zone)을 이용하여 물리적인 재해에 대응 할 수 있다. ### 비용 최적화 * AWS는 애플리케이션 목적에 맞는 다양한 리소스 유형을 제공한다. * 탄력성 : 수요에 맞게 자동으로 리소스의 크기와 양을 조절 할 수 있다. * 다양한 구매옵션 : SP, RI와 같은 옵션을 이용해서 비용을 절약 할 수 있다. ### 캐싱 * 애플리케이션 데이터 캐싱 : 인메모리 캐시에 데이터를 저장하여 빠르고 편리하게 데이터에 접근 할 수 있도록 한다. 메모리 캐시는 데이터베이스에 대한 부하를 줄요주기 때문에 시스템의 안정성에도 기여한다. * Edge 캐싱 : 사용자에게 가까운 인프라를 통해서 콘텐츠를 제공한다. AWS의 CloudFront와 같은 CDN을 이용하여 사용자에게 지속적으로 빠르게 데이터를 제공 할 수 있다. ### 보안 * 공동책임모델 : 보안과 규정준수를 AWS와 고객이 공동책임하에 활동을 수행한다. * 최소 권한 : 필요한 만큼의 권한만 부여한다. * AWS 기능을 이용한 심층 방어 : 네트워크에서 애플리케이션 및 데이터베이스에 이르는 여러 수준의 인프라 보안 기능을 이용, 다층 보안 체계를 구축한다. * 코드로서의 보안 : 방화벽 규칙, 네트워크 엑세스 제어, Public & Private 서브넷에 대한 보안 강화를 코드로 만들고 이를 템플릿화 한다. * 실시간 감사 : AWS 제공하는 모니터링 툴(CloudWatch, CloudTrail)등을 이용하여, 보안 위협을 모니터링 한다. ![AWS 공동책임모델](https://docs.google.com/drawings/d/e/2PACX-1vREd-XEUdH0NTE8_GniyVd9gaCUNNr2_TlJv1d2iwrpxnCVUHHhA0bPfai6VcVQbLZB7ze0SH7QJB2K/pub?w=1198&h=654) ### 클라우드 아키텍처 모범사례의 적용 1. 구성요소의 분리 : 하나의 구성요소가 실패하더라도 시스템의 다른 구성요소가 계속 작동하도록 서로에 대한 긴밀한 종속성이 없도록 구축하는 것이다. 이것은 느슨한 결합을 통해서 달성한다. 시스템의 구성 요소가 느슨하게 결합될 수록 확장성이 좋고 안정적이다. 이는 SOA(서비스 지향 아키텍처)의 설계원칙에 해당한다. 2. 탄력적 구성 : 배포프로세스를 자동화 하고 아키텍처의 구성 및 빌드 프로세스를 간소화 하여 구현한다. 이러한 시스템은 사람의 개입없이 작동하며, 수요에 따라서 확장 및 축소 할 수 있다. 3. 실패를 위한 설계 : 클라우드에서 아키텍처를 수립할 때, 비관적인 태도를 견지한다. 아키텍처의 구성요소는 실패할 것을 가정하여서 고가용성 내결함성을 가지도록 설계한다.
Recent Posts
생성 AI 모델 Flux.1 설치 및 사용
GPT를 이용한 Reranker 테스트
5분만에 만들어보는 Streamlit 챗봇
Let's encrypt로 SSL 인증서 관리하기
Upscayl을 이용한 이미지 업스케일링
스테이블 디퓨전 설치 및 사용해보기
Elasticsearch 설치
AI / LLM에 대한 친절한 소개
SLA 다운타임 계산기
Docker로 GitLab 설치하기
Archive Posts
Tags
architecture
aws
aws cheat sheet
cloud
Copyrights © -
Joinc
, All Rights Reserved.
Inherited From -
Yundream
Rebranded By -
Joonphil
Recent Posts
Archive Posts
Tags