이번 24년도 2학기에 진행하게 될 '여기어때' 인턴십에서 내가 속하게 될 SRE 팀에 대해 더 자세히 알아보고 싶어 해당 포스팅을 작성해보기로 하였다.
Site Reliability Engineering의 약자로 사이트 신뢰성 엔지니어링을 의미한다.
2003년 Google 엔지니어링 팀의 Ben Treynor Sloss가 창안한 개념으로 , 소프트웨어 엔지니어링 원칙을 활용하여 인프라와 운영 작업을 자동화하고 시스템의 안정성을 높이는 것을 목표로 한다.
주로 대규모 서비스 운영에 초점을 맞추며, 시스템의 안정성과 효율성을 유지하고 향상시키는 역할을 수행한다.
클라우드 기술의 발전으로 인한 자동화, 확장성, 비용 절감, 신속한 배포, 복구 능력, 보안 강화와 같은 이유들로 더 많은 기업들이 SRE를 채택하게 되었다.
모니터링 및 경고 시스템 구축
실시간 모니터링
시스템의 상태와 성능을 실시간으로 모니터링한다.
경고 설정
문제가 발생할 경우 즉시 알림을 받을 수 있도록 경고 시스템을 설정한다.
자동화
반복 작업 자동화
반복적이고 수작업 많이 필요한 작업을 자동화하여 효율성을 높인다.
배포 자동화
코드 배포와 인프라 업데이트를 자동화하여 신속하고 안정적인 배포를 지원한다.
장애 대응 및 복구
장애 대응
시스템 장애가 발생하면 신속히 대응하여 문제를 해결한다.
장애 복구
데이터 백업 및 복구 절차를 통해 시스템을 원상태로 복구한다.
성능 최적화
서비스 수준 목표(SLO) 설정
시스템의 가용성, 지연 시간, 성능 등 목표를 설정하고 이를 준수한다.
가용성 테스트
시스템의 가용성을 주기적으로 테스트하고 개선한다.
개발 팀과 협업
DevOps 문화
개발 팀과 협력하여 코드 배포, 테스트, 운영을 원할하게 한다.
피드백 제공
개발 팀에 운영상의 피드백을 제공하여 소프트웨어 품질을 높인다.
보안 강화
보안 모니터링
시스템의 보안 상태를 모니터링하고 잠재적 위협을 탐지한다.
보안 업데이트
보안 패치를 적용하고 시스템을 최신 상태로 유지한다.
서비스의 안정성을 유지하면서 변화를 최대한 수용한다.
시스템의 상태와 가용성을 꾸준히 모니터링한다.
어떤 기능에 대해 문제가 발생하면 이에 대해 긴급 대응한다.
시스템의 변화를 추적하고 관리한다.
수요를 예측하고, 계획을 세운다.
이를 통해 서비스의 수용력을 확보하고, 효율성을 향상한다.
대기 시간(Latency)
서비스가 요청에 응답하는 데 걸리는 시간을 나타낸다. 지속 시간뿐만 아니라 성공적인 요청의 대기 시간을 구별하는 데에도 중점을 두어야한다.
트래픽(Traffic)
서비스에 대한 수요 측정이다. 대표적인 예로 초당 HTTPS 요청 수가 존재한다.
오류(Errors)
오류는 실패한 요청/전체 요청의 비율로 측정된다.
포화 수준 (Saturation)
서비스 또는 시스템 리소스의 사용 정도로 설명할 수 있다. 예로는 과도한 CPU 자원 사용이 있다. CPU 자원이 부족하면, 스로틀링을 초래하고 결과적으로 응용 프로그램의 성능을 저하시킨다.
로그 수집
로그는 시스템이나 애플리케이션에서 발생한 이벤트를 텍스트로 저장하는 형태이다.
메트릭 수집
메트릭은 CPU 및 메모리, 사용량, 네트워크 요청에 따른 응답 상태, 요청의 횟수 등 수치화된 데이터이다.
분산 시스템
모든 로그와 메트릭은 애플리케이션 내의 다양한 곳에 존재한다. 이러한 로그와 메트릭을 수집하기 위해서는 분산 시스템의 이해가 필요하다.
- 분산 시스템
여러 독립적인 컴퓨터가 네트워크를 통해 상호작용하여 하나의 시스템처럼 동작하는 컴퓨팅 환경을 의미한다.
리눅스
터미널 환경에서 리눅스의 작업 관리자를 어떻게 보는지는 알아야 한다. 또한 리눅스 상에서 작동하는 다양한 애플리케이션의 로그를 쉽게 탐색, 분석할 줄 알아야 한다.
추가적인 기본적인 운영체제 작동 원리와 프로세스 관리 등을 알고 있으면 좋다.
클라우드 서비스
Python, Bash 등은 자동화를 위해 쓰이는 스크립팅 언어이다. 대부분에서 리눅스에서 즉시 사용할 수 있다.
클라우드 서비스
AWS, Miscrosoft Azure, Google Cloud Platform 등이 대표적인 클라우드 서비스이다.
컨테이너 기술
Docker, Kubernetes 컨테이너 기술을 활용하여 여러개의 메트릭을 종합적으로 볼 수 있는 역량이 필요하다.
로깅/모니터링 도구
시스템에 가장 잘 맞는 로깅 및 모니터링 도구를 선택할 수 있어야 한다.
AWS CloudWatch
Datalog
Prometheus, Grafana
ELK Stack
DevOps
개발과 운영 팀 간의 협업을 통해 소프트웨어의 빠르고 안정적인 배포를 목표로 하며, 문화적 변화를 강조한다.
SRE
시스템의 신뢰성과 가용성을 보장하면서 자동화를 통해 운영 작업을 최적화하는데 중점을 둔다.
또한 장애 대응, 성능 최적화, 리소스 관리 등을 통해 신뢰성을 높인다.
즉, DevOps 엔지니어는 소프트웨어 통합 및 배포에 중점을 맞추는 데 비해, SRE 엔지니어는 이미 작동하고 있는 서비스의 운영과 모니터링, 장애 대응에 초점을 맞춘다.
출처: https://www.linkedin.com/pulse/benefits-collaborated-sre-devops-team-shailender-singh/