DevOps/SRE

SRE란 무엇인가? SRE는 단순한 ‘운영’이 아니다

기록하는 백앤드개발자 2025. 5. 23. 07:05
반응형


[SRE] SRE(Site Reliability Engineering) 목차

 

ㅁ 들어가며

“SRE가 정확히 뭐지?”

Site Reliability Engineering, 줄여서 SRE는 단순한 운영 역할을 넘어서, 서비스의 신뢰성(Reliability)을 코드와 시스템적으로 보장하는 엔지니어링 문화이다. 구글에서 시작된 개념이지만, 오늘날 대부분의 대규모 플랫폼 서비스 기업들이 SRE 조직을 두고 안정성과 효율성을 동시에 추구하고 있다.

 


ㅁ SRE는 단순한 ‘운영’이 아니다

  과거에는 운영(Operation)과 개발(Development)이 분리되어 있었다. 개발자는 코드를 만들고, 운영자는 그것을 배포하고 문제를 해결하는 구조였다. 하지만 이 구조는 다음과 같은 문제를 일으켰다.

  • 개발자는 안정성보다 기능에 집중하고,
  • 운영자는 기능보다 장애 대응에 집중하는
    서로 다른 목표를 가진 두 팀 사이에 긴장이 생기게 된다.

SRE는 이 간극을 줄이기 위해 태어난 역할이다.

SRE는 단순한 운영 역할을 넘어, 서비스의 신뢰성(Reliability) 코드와 시스템적으로 보장하려는 엔지니어링 중심의 접근 방식이다.

즉, DevOps가 문화와 협업의 관점에서 접근한다면, SRE 신뢰성을 측정하고 유지하는 기술적 실천 방법이라고 할 수 있다.


운영에도 소프트웨어 엔지니어링의 원칙을 적용하여, 장애를 예측하고 자동화하며, 시스템의 안정성과 확장성을 확보한다.

SRE라는 개념이 결국은 “책임감 있게 서비스를 끝까지 운영하고 개선하는 개발자”의 실천 방법이라고 생각한다. 

 


ㅁ 나의 경험 속에서 만난 SRE의 역할

처음부터 SRE의 개념을 알고 있었던 것은 아니다. 

다양한 서비스의 개발과 운영을 함께하며 SRE가 무엇을 하는지, 왜 필요한지 직접 경험했다. 

아래 사례들은 단순한 운영을 넘어 SRE의 철학이 드러난 순간들이었다.

 

경험 1. 트래픽 장애 대응 – LG메시징팀 중계 Gateway 운영

 

금융사 고객은 LG와 KT 두 통신사를 통해 대량 문자를 이중 발송하는 구조였다. KT 회선 장애로 모든 트래픽이 LG로 집중되는 사건이 발생했다. 시스템은 Redis 기반 비동기 병렬 구조로 RS(응답 서버)와 TS(처리 서버)로 구성되어 있었다.

서버 리소스 부족 상황에서 컨테이너를 3배로 증설했지만, Sub IP 고갈로 Pod를 무작정 늘릴 수 없었다. 응답 지연도 문제였다. RS Pod를 늘리고, 부담이 적은 TS Pod를 줄여 즉각적인 응답성을 확보했다. RS 자원을 확장해 빠르게 Request를 Redis에 적재하여 응답 지연을 막았다. 이후 Amazon VPC CIDR 블록 확장으로 구조적 확장성을 마련했다. 단순한 장애 대응이 아니라, 시스템 신뢰성을 위한 SRE적 판단이었다.

 

📌 개선 관련 블로그: AWS VPC CIDR 블록 확장

 

 

경험 2. 관측 가능성 강화 – SaaS 근태 시스템 성능 개선

 

출퇴근 관리 SaaS에서 사용자 증가로 간헐적 지연이 발생했다. Spring Filter에 elapsed time 로깅을 적용해 병목 요청을 식별하고, 성능 개선을 진행했다. Pinpoint APM을 도입해 앱과 백엔드 흐름을 시각적으로 분석했다.

단순 튜닝이 아니라, 서비스의 "관측 가능성(Observability)"을 강화해 신뢰성을 높인 SRE적 접근이다.

 

 

경험 3. 자동화와 효율화 – HeyKakao 연동 게이트웨이 개발

 

HeyKakao 대화플랫폼과 외부 스킬 API 연동 게이트웨이에서는 k6와 Grafana로 부하 테스트, GitHub Actions로 배포 자동화, Ansible로 환경 구성을 진행한다. DevOps와 SRE의 경계에서 안정성과 속도를 동시에 추구한다.

Kibana 대시보드로 Bot 트래픽과 서비스 흐름을 가시화한다. 에러율, 트래픽 변화, 처리 건수, 지연 시간 지표를 기반으로 실시간 이상 탐지와 사후 분석이 가능한 모니터링 체계를 구축하는 중이다. 

 

장애는 막고, 기능은 빠르게 배포할 수 있는 시스템. 그것이 내가 생각하는 SRE의 핵심이며, 지금 가장 필요한 것이다.

 


ㅁ 내가 생각하는 SRE의 핵심 가치

신뢰성(Reliability)

서비스의 중단과 가동 중지 횟수를 최소화해 신뢰성을 높인다. SLA/SLO/SLI 기반으로 서비스 품질을 정의하고, 이를 지속적으로 모니터링한다.

 

관측 가능성(Observability)

로그, 메트릭, 트레이싱을 통해 시스템의 상태와 문제를 빠르게 파악할 수 있는 구조를 만든다.

 

자동화(Automation)

DevOps와 마찬가지로 빠르고 안정적인 개발·배포를 지향한다. 수동 작업을 최소화하고, 일관된 인프라 환경을 자동화해 시스템 안정성을 높인다.

 

확장성(Scalability)

예측 불가능한 상황에도 시스템이 유연하게 대응할 수 있도록 설계한다. Amazon VPC CIDR 블록 확장 경험처럼, 신뢰성을 위해 확장성을 고려한다.

 

지속적인 개선(Continuous Improvement)

장애가 반복되지 않도록 지표를 구성하고 공유한다. 장애 이력을 정리하는 포스트모템과 구조적 개선을 통해, 시스템을 지속적으로 발전시킨다.

 


ㅁ 마무리

개발자에서 출발해 운영, 그리고 인프라 자동화까지 경험해온 나는,

 

  SRE라는 개념이 결국은 “책임감 있게 서비스를 끝까지 운영하고 개선하는 개발자”라는 것

 

을 실감한다. 지금 이 순간에도 안정성과 확장성 있는 시스템을 고민하며, 이 새벽에 눈을 뜨자마자 시스템 알람을 확인한다.

앞으로도 신뢰할 수 있는 시스템을 만들고 운영하는 엔지니어로 성장해 나가고자 한다. 🙏 

 

ㅁ 함께 보면 좋은 사이트

AWS - 사이트 신뢰성 엔지니어링(SRE)이란 무엇인가요?

IBM - SRE란 무엇인가요?

사이트 신뢰성 엔지니어(SRE, Site Reliability Engineer)가 하는 일, 필요 역량

반응형