안정적인 인프라 설계와 절차

 ・ 2 min

photo by Kateryna Hliznitsova on Unsplash

이번 글은 예전에 Coursera에 있는 Reliable Google Cloud Infrastructure design process 강의를 보고 일부를 정리한 글이에요. 더 자세한 정보는 해당 강의를 수강해 보는 걸 추천해 드릴게요. 무료예요!

Requirements, Analysis, and Design#

Who: 시스템 사용자뿐만 아니라 개발자와 이해관계자들까지 결정하는 사람이에요.

What: 단순하면서 어려운 것. 우리에게 필요한 주요 기능 요건을 확립해야 하면서 분명하고 모호하지 않은 방식으로 설정해야 해요.

Why: 시스템이 필요한 이유는 정말 중요한 질문이에요. 설계될 시스템이 해결해야 하는 가장 큰 문제는 무엇인가? 명확한 요구에 대한 이해가 없다면 추가 요구사항이 더해질 거예요. why는 잠재적으로 KPI's, SLO's, SLA's를 정의하는 데 도움을 줄 거예요.

When: 범위를 산정하는 것과 현실적인 수행 기간을 결정하는 데 도움을 줘요

How: 수많은 비기능적 요구사항을 결정하는 데 도움을 줘요.

SLOs, SLIs, and SLAs#

KPI: Key Perfomance Indicator, 핵심 성과 지표. 미션, 비전, 핵심 가치에 도달하기 위한 작은 목표들의 구성

SLI: Service Level Indicator, 서비스 수준 척도. 서비스의 수준을 정량적으로 측정할 수 있게 설정하고 추적할 수 있도록 만든 지표

SLO: Service Level Objectives, 서비스 수준 목표. SLI에 의해 측정된 값이 목표값이나 일정 범위 안에 들어왔는지 확인하는 지표

SLA: Service Level Agreement, 서비스 수준 협약. 조직이나 팀별로 추구하는 목표를 달성하기 위해 서비스에 더한 작업물을 문서화해 측정된 기대치를 지닌 문서로 만드는 것.

The 12-Factor App#

더 자세한 정보는 The Twelve-Factor App 사이트를 참고하세요.

  • 코드베이스
    버전 관리되는 하나의 코드베이스와 다양한 배포
  • 종속성
    명시적으로 선언되고 분리된 종속성
  • 설정
    환경(environment)에 저장된 설정
  • 백엔드 서비스
    백엔드 서비스를 연결된 리소스로 취급
  • 빌드, 릴리즈, 실행
    철저하게 분리된 빌드와 실행 단계
  • 프로세스
    애플리케이션을 하나 혹은 여러개의 무상태(stateless) 프로세스로 실행
  • 포트 바인딩
    포트 바인딩을 사용해서 서비스를 공개함
  • 동시성(Concurrency)
    프로세스 모델을 사용한 확장
  • 폐기 가능(Disposability)
    빠른 시작과 그레이스풀 셧다운(graceful shutdown)을 통한 안정성 극대화
  • 개발/프로덕션 환경 일치
    개발, 스테이징, 프로덕션 환경을 최대한 비슷하게 유지
  • 로그
    로그를 이벤트 스트림으로 취급
  • Admin 프로세스
    admin/maintenance 작업을 일회성 프로세스로 실행

You cannot have a positive life and a negative mind.

— Joyce Meyer


Other posts
cover_image
 ・ 15 min

기획서란 무엇일까

cover_image
 ・ 12 min

여분 차원과 암흑 물질

cover_image
 ・ 2 min

Freezed에서 Invalid argument 해결하기