잘 설계된 아키텍처는 다음과 같은 원칙이 충족되어야 한다

  • 운영 우수성
  • 보안
  • 안정성
  • 성능 효율성
  • 비용 최적화
  • 지속가능성

운영 우수성(Operational Excellence)

운영 우수성 원칙은 효과적인 개발 및 워크로드 실행을 지원하고, 작업에 대한 인사이트를 얻어 지원 프로세스 및 절차를 지속적으로 개선하여 비즈니스 가치를 제공할 수 있는 능력이다.
운영 우수성에는 5개의 설계 원칙이 있다 1) 코드를 통한 운영
절차적인 부분에 대한 언급이다. 정책 설정(환경 설정)을 기관에 맞게 해야 한다 주기적으로 검토해야 한다.-장애 발생 여부, 성능 이슈 모니터링 리포팅 2) 자주 발생하고 되돌릴 수 있는 사소한 변경 내용 적용 각각의 workload(작업량)에 대한 변경 관리를 적용해야 한다. 즉, 변경 전/후의 처리 절차, 승인 절차 등과 같은 부분을 알아야 한다. 또한 예정된 사항에 대해 올바른 back up(recover)할 수 있또록 해야 한다. 3) 수시로 운영 절차 수정 만약 운영 절차가 본 사업과 맞지 않는다면 수시로 수정해 주어야 한다. 4) 실패 예측 오류, 실패에 대한 예측을 할 수 있어야 한다. 이를 위해서는 로그 관리 및 모니터링이 되어야 한다. 실패 예측의 대표적인 부분은 성능 관리(인스턴스 관련 cpu, 메모리, 기타 등등)와 많은 연관이 있다. 5) 재발 방지 - 모든 운영상 실패로부터 학습 실패 사항에 대해 원인 분석을 하고, 이를 이해 관계자에게 전달하고, 이를 적용해야 한다.

위와 같은 사항들을 모두 항목화 하여 점검해야 한다.

보안(Security)

  1. 자격증명 - 사용자 인증에 관한 부분은 ..유저에 대한 적절한 permission을 수행해 주어야 한다.
  2. 하드닝? 보안에 대해 제대로 된 환경설정을 하는지 하드닝 해야 한다. 클라우드 12 계층에 따른 cloud party model(iaas, paas, saas) 보안 인증 기준에 따라 iaas, saas, paas 정하기-외워야 해.

전송 구간 간 암호화 P2P로 통신하던 어떻게 통신하던간에 통신에 대한 보안에 대한 설계 부분을 고려해야 한다. 또한 중요정보 처리 구간에 따라 통신 구간 암호화를 무엇을 적용할 지 설계 해야 한다. 만약 VPC와 VPC간(리전간) 통신을 할 때 clear text로 하면 해커에게 다 들킨다. 그래서 암호화-ISS, SSL-을 해야 해 워커로드, 호스트. 무시기 로드 간에 통신은 TLS v1.2 이상을 써서 보안 kisa 키 길이 별 암호 알고리즘 공부하렴

7개의 설계 원칙이 있다.

1) 강력한 자격 증명 기반 구현

2) 추적 기능 활성화

3) 모든 계층에 보안 적용

4) 보안 모범 사례의 자동 적용
AWS, GCP 등에 올라온 가이드 아키텍처를 바탕으로 서계해야 한다. 국내에는 거의 사례가 없으니

5) 전송 및 보관 중인 데이터 보호

6) 사람들이 데이터에 쉽게 액세스할 수 없도록 유지

7) 보안 이벤트에 대비
침해에 대비하기 위해 클라우드 리소스가 모든 로그를 남겨둘 수 있어야 함

안정성(Reliability)

장애 받았을 때 복구가 바로 될 수 있는지에 관한 원칙 이중화, 5개의 설계 원칙이 있다.

1) 장애 자동 복구 장애에 대한 복구 절차를 바로 마련해야 한다. 자동 복구를 해야 하는 이유는 다양한 근거가 있다. 그 중 가장 큰 이유는 클라우드는 리소스가 너무 많기 때문이다. 일일히 수동으로 복구하기에는 그 수가 너무 많다. 뿐만 아니라 신속한 대응을 위함도 있다. (온프레미스에서는 수동으로 하던 말던~)

2) 복구 절차 테스트
모든 테스트를 주기적으로 해야 한다. 클라우드 컴퓨팅

3) 수평적 확장(Scale Out)으로 워크로드 전체 가용성 증대

4) 용량 추정 불필요 로그를 자동화 함으로써 풀이 찼을 때도 가용할 수 있도록 하는 환경 구성이 필요하다 하이프리드 환경 상에서 운영하는 환경이 적지 않게 있다. 침해공격이나 문제 발생 시 로그나 제한을 두는 게 아니라 전체를 사용할 수 있도록 해야 함. 하지만 클라우드 리소스가 감당할 수 있는 수준으로 설정해야 한다. 이는 백업을 할 수 있게 하기 위함이다. (ex. 100GB 용량 중 10기가가 로그야. 그럼 이거 전체 하는 게 아니라 이 중에서 얼마만 로그로 하고 점진적으로 증가시켜)

5) 자동화 변경 사항 관리 Change manegement도 자동화 해야 함. 환경설정에서 장애 발생 시 frame over 할 수 있도록. 즉, 뭐 승인 받고 귀찮게 하지 말고 문제 발생 시 바로바로 대응할 수 있어야 한다. 변경관리 사항을 추적할 수 있도록 로그를 남기도록 해야 한다.

+) 클라우드 컴퓨팅 - 클라우드 자원 클라우드 컴퓨팅 서비스 - 컴퓨팅을 프로비저닝하는 것

성능 효율성(Performance Efficiency)

1) 고급 기술 대중화 대중화란 현대적 어플리케이션을 사용하라는 뜻이다. 현대에 들어서는 신속하게 개발하고 퍼포먼스 이슈를 최대한 끌어내기 위해 Cloud-Native 기반 기술을 사용한다. +) Cloud Native의 필수 구성 요소
- 컨테이너
- CI/CD - DevOps - MSA : 각각의 테넌트 방식으로 들어간다. 거의 뭐 하나의 워크로드 단위로. - 서버리스 : OS, API 다 제공 해 줄테니 게발만 신속하게 하라.
ex) AWS Lamda, AWS Fargate

2) 몇 분 만에 전세계에 배포

3) 서버리스 아키텍처 사용

4) 실험 횟수 증가

5) 기계적 동조 고려

비용 최적화(Cost Optimization)

주기적으로 비용 관리 모니터링을 해야 한다. 온프레미스 환경에서는 쉽지 않지만 클라우드 환경에서는 수월하게 할 수 있다

1) 클라우드 재무 관리 구현
워크로드를 최대한 줄이고 그에 관련한 비용처리를 해야 함

2) 소비 모델 도입
불필요한 것을 생성하지 말라

3) 전반적인 효율성 측정
적은 워크로드는 과감히 없애고 기존 것으로 통합할 수 있어야 한다.

4) 획일적인 업무 부담에 대한 비용 지출 중단 온프레미스 환경에서는 감당해야 하는 것들(부대설비, 통신설비, 이들을 관리하는 인원)이 너무 많다. 하지만 클라우드 환경에서는 이러한 것들에 대한 비용을 최소화 할 수 있다. SaaS를 CSP에서 많이 제공하는 만큼 이용객들도 많이 사용한다.

5) 비용 분석 및 기여도 파악 ROI-투자 대비 수익률-를 확인해야 한다.

지속 가능성(Sustainability)

탄소 배출량-넷제로와 관련이 있다. 즉, 불필요한 클라우드를 만들지 말아야 한다.