사이트 신뢰성 엔지니어링(Site Reliability Engineering, SRE)

SummerToday·2024년 8월 4일
0

AWS 아키텍처 관련

목록 보기
1/7
post-thumbnail
post-custom-banner

이번 24년도 2학기에 진행하게 될 '여기어때' 인턴십에서 내가 속하게 될 SRE 팀에 대해 더 자세히 알아보고 싶어 해당 포스팅을 작성해보기로 하였다.

SRE란?

Site Reliability Engineering의 약자로 사이트 신뢰성 엔지니어링을 의미한다.

  • 2003년 Google 엔지니어링 팀의 Ben Treynor Sloss가 창안한 개념으로 , 소프트웨어 엔지니어링 원칙을 활용하여 인프라와 운영 작업을 자동화하고 시스템의 안정성을 높이는 것을 목표로 한다.

  • 주로 대규모 서비스 운영에 초점을 맞추며, 시스템의 안정성과 효율성을 유지하고 향상시키는 역할을 수행한다.

  • 클라우드 기술의 발전으로 인한 자동화, 확장성, 비용 절감, 신속한 배포, 복구 능력, 보안 강화와 같은 이유들로 더 많은 기업들이 SRE를 채택하게 되었다.


SRE 주요 업무

  • 모니터링 및 경고 시스템 구축

    • 실시간 모니터링
      시스템의 상태와 성능을 실시간으로 모니터링한다.

    • 경고 설정
      문제가 발생할 경우 즉시 알림을 받을 수 있도록 경고 시스템을 설정한다.


  • 자동화

    • 반복 작업 자동화
      반복적이고 수작업 많이 필요한 작업을 자동화하여 효율성을 높인다.

    • 배포 자동화
      코드 배포와 인프라 업데이트를 자동화하여 신속하고 안정적인 배포를 지원한다.


  • 장애 대응 및 복구

    • 장애 대응
      시스템 장애가 발생하면 신속히 대응하여 문제를 해결한다.

    • 장애 복구
      데이터 백업 및 복구 절차를 통해 시스템을 원상태로 복구한다.


  • 성능 최적화

    • 서비스 수준 목표(SLO) 설정
      시스템의 가용성, 지연 시간, 성능 등 목표를 설정하고 이를 준수한다.

    • 가용성 테스트
      시스템의 가용성을 주기적으로 테스트하고 개선한다.


  • 개발 팀과 협업

    • DevOps 문화
      개발 팀과 협력하여 코드 배포, 테스트, 운영을 원할하게 한다.

    • 피드백 제공
      개발 팀에 운영상의 피드백을 제공하여 소프트웨어 품질을 높인다.


  • 보안 강화

    • 보안 모니터링
      시스템의 보안 상태를 모니터링하고 잠재적 위협을 탐지한다.

    • 보안 업데이트
      보안 패치를 적용하고 시스템을 최신 상태로 유지한다.


SRE의 목표

  • 서비스의 안정성을 유지하면서 변화를 최대한 수용한다.

  • 시스템의 상태와 가용성을 꾸준히 모니터링한다.

  • 어떤 기능에 대해 문제가 발생하면 이에 대해 긴급 대응한다.

  • 시스템의 변화를 추적하고 관리한다.

  • 수요를 예측하고, 계획을 세운다.

  • 이를 통해 서비스의 수용력을 확보하고, 효율성을 향상한다.


SRE 모니터링 주요 지표

  • 대기 시간(Latency)
    서비스가 요청에 응답하는 데 걸리는 시간을 나타낸다. 지속 시간뿐만 아니라 성공적인 요청의 대기 시간을 구별하는 데에도 중점을 두어야한다.

  • 트래픽(Traffic)
    서비스에 대한 수요 측정이다. 대표적인 예로 초당 HTTPS 요청 수가 존재한다.

  • 오류(Errors)
    오류는 실패한 요청/전체 요청의 비율로 측정된다.

  • 포화 수준 (Saturation)
    서비스 또는 시스템 리소스의 사용 정도로 설명할 수 있다. 예로는 과도한 CPU 자원 사용이 있다. CPU 자원이 부족하면, 스로틀링을 초래하고 결과적으로 응용 프로그램의 성능을 저하시킨다.


SRE 엔지니어 핵심 역량

  • 로그 수집
    로그는 시스템이나 애플리케이션에서 발생한 이벤트를 텍스트로 저장하는 형태이다.

  • 메트릭 수집
    메트릭은 CPU 및 메모리, 사용량, 네트워크 요청에 따른 응답 상태, 요청의 횟수 등 수치화된 데이터이다.

  • 분산 시스템
    모든 로그와 메트릭은 애플리케이션 내의 다양한 곳에 존재한다. 이러한 로그와 메트릭을 수집하기 위해서는 분산 시스템의 이해가 필요하다.

    • 분산 시스템
      여러 독립적인 컴퓨터가 네트워크를 통해 상호작용하여 하나의 시스템처럼 동작하는 컴퓨팅 환경을 의미한다.

SRE 엔지니어 핵심 기술

  • 리눅스
    터미널 환경에서 리눅스의 작업 관리자를 어떻게 보는지는 알아야 한다. 또한 리눅스 상에서 작동하는 다양한 애플리케이션의 로그를 쉽게 탐색, 분석할 줄 알아야 한다.
    추가적인 기본적인 운영체제 작동 원리와 프로세스 관리 등을 알고 있으면 좋다.

  • 클라우드 서비스
    Python, Bash 등은 자동화를 위해 쓰이는 스크립팅 언어이다. 대부분에서 리눅스에서 즉시 사용할 수 있다.

  • 클라우드 서비스
    AWS, Miscrosoft Azure, Google Cloud Platform 등이 대표적인 클라우드 서비스이다.

  • 컨테이너 기술
    Docker, Kubernetes 컨테이너 기술을 활용하여 여러개의 메트릭을 종합적으로 볼 수 있는 역량이 필요하다.

  • 로깅/모니터링 도구
    시스템에 가장 잘 맞는 로깅 및 모니터링 도구를 선택할 수 있어야 한다.

    • AWS CloudWatch

    • Datalog

    • Prometheus, Grafana

    • ELK Stack


DevOps, SRE 차이점

  • DevOps
    개발과 운영 팀 간의 협업을 통해 소프트웨어의 빠르고 안정적인 배포를 목표로 하며, 문화적 변화를 강조한다.

  • SRE
    시스템의 신뢰성과 가용성을 보장하면서 자동화를 통해 운영 작업을 최적화하는데 중점을 둔다.
    또한 장애 대응, 성능 최적화, 리소스 관리 등을 통해 신뢰성을 높인다.

즉, DevOps 엔지니어는 소프트웨어 통합 및 배포에 중점을 맞추는 데 비해, SRE 엔지니어는 이미 작동하고 있는 서비스의 운영과 모니터링, 장애 대응에 초점을 맞춘다.

출처: https://www.linkedin.com/pulse/benefits-collaborated-sre-devops-team-shailender-singh/





참고:
https://www.redhat.com/ko/topics/devops/what-is-sre
https://www.codestates.com/blog/content/사이트-신뢰성-엔지니어
profile
IT, 개발 관련 정보들을 기록하는 장소입니다.
post-custom-banner

0개의 댓글