SRE는 무엇일까?

강재민·2022년 10월 30일
0

Gitlab

목록 보기
3/5


SRE가 필요한 이유

개발 과정에는 흔히 개발자운영자가 있다. 이 때 둘의 이해관계가 충돌하는데 개발자는 좀 더 빠르게 기능을 출시하는 것을 목표로 하고 운영자는 더욱 안정성있는 운영을 목표로 한다. 이 때 DevOps는 자동화를 통한 비교적 안정적이면서 좀 더 빠른 배포를 목표로하는데 여기서 SRE는 사이트 신뢰성 엔지니어링이라고 해서 전체적인 파이프라인의 신뢰성을 증진시키는 것을 목표로 한다.


SRE의 정의

SRE는 구글 엔지니어인 Ben Treynor에 의해 처음 정의된 단어이다.
SRE는 여러 소프트웨어 엔지니어들과 일하고 당신이 operations을 소프트웨어 문제로서 다룰 때 튀어나온 개념이다.

SRE 팀은 software engineers로 이루어져 있다.
소프트웨어를 빌드하고 실행하는 사람이다.
사용하는 시스템 또는 서비스의 신뢰성을 증진시키는 사람이다.

그럼 각각의 중요한 정의들을 차근차근 살펴보자.


System Reliability의 중요성

그럼 여기서 말하는 system은 정확히 무엇을 가리킬까? 여기서 말하는 system은 서버부터 가상환경, DB, 네트워크, 어플리케이션까지 아우르는 개발환경을 일컽는다.

그럼 Reliability는 무엇일까? >> 가용성같은거임
이메일이 1주일에 1번씩 다운된다거나 온라인 뱅킹 웹사이트가 하루에 한 번 씩 사용 불가능 한다거나 하는것이 해당된다.

하지만 유튜브나 Gmail 트위터 같은 어플리케이션은 중단없이 계속해서 이요 가능하다. 이것이 바로 Reliability에 해당한다.

하지만 유저들은 보통 이를 거의 알아채지 못한다. 다만 사용을 하려고 했을 때 잘 안된다면 그 때 깨달을 뿐이다. 하지만 단 한 번이라도 이런 사태가 발생하게 되면 큰 이슈가 되고 사용자들은 이런 어플리케이션에 대해 계속 사용할지 말지에 대하여 다시 한 번 고려해볼 정도로 사용자와의 신뢰를 깨지게 할 가능성이 있다.

소비자의 불쾌를 유발하거나 소비자가 구매하려고 하는 순간에 구매를 못했다면 기업 입장에서는 매출 감소가 되는 것이다. 때문에 시스템의 신뢰성은 기업의 이익과 직결되는 사항이다.


SLA와 에러 예산

그럼 어떻게하면 시스템을 신뢰성있게 만들 수 있을까? 그 전에 시스템의 신뢰성을 저해하는 요소부터 살펴보자. 일단 인프라 또는 플랫폼 또는 서비스, 어플리케이션을 변경하고자 하는것부터가 시스템의 신뢰성을 저해하는 요소가 된다.

그렇다고해서 개발자에게 변화를 주지 말라고 막을 수는 없다. 어플리케이션을 더 좋게, 그러므로서 비지니스 가치와 경쟁력을 유지할 수 있게 만들어야한다. 그러면서 SRE는 안정성을 유지시키도록 만들고 어플리케이션을 항상 접속 가능한 상태로 만들게 한다.

안정성을 위해서 수많은 테스트와 체크리스트 없이 이 평가 부분들을 안정화 시키는데 있어서 자동화 하는 것이 SRE 라고 할 수 있다.


SRE의 역할 업무와 책임

그럼 어떻게 평가를 자동으로 완료시킬까?

그 전에 SLA라는 개념을 알아보자 Service Level Agreement로 서비스 제공자와 소비자사이에 어느정도의 비율로 계속해서 사용 가능한지를 나타내는 지표라고 한다.

SLA에 있어서 핸드폰 네트워크의 SLA가 99%라면 당신의 서비스를 100% SLA로 유지시킬 필요는 없다 똑같이 99%로 맞추나 100%로 맞추나 결국 같은 성능을 내기 때문이다. 때문에 비용절감을 위해서 상황에 맞게 조절하는 것이 필요하다.

이렇게 보니까 SLA는 가용성과 같은 의미가 되는듯 하지만 반응 시간과 에러율까지 고려되는 점이 다르다는 것 같다.

SLA의 에러율을 계산하는 방식이다.

그럼 이 SLA의 목표 정도를 누가 정하게 될까? 얼마나 많은 요청이 성공해야하고 얼마나 적은 다운타임을 허용범위로 정해야할까

보통은 비지니스 하는 인원과 엔지니어가 같이 협의하에 이루어지고 고객의 만족도를 충족시키기 위한 마지노선을 정하게 되는 것 같다. 좀 더 욕심을 부리면 경쟁사보다 더 높은 만족도를 유지시키려고 노력할 것이고 엔지니어 또한 기술적으로 가능한 정도를 제시하게 된다.

다만, 초반에는 SLA를 높이는게 수월할 수 있지만 점점 더 높은 레벨의 SLA를 목표로 할 수록 조금의 SLA를 높이는데 있어서 많은 비용을 초래하게 된다. 때문에 소프트웨어 개발자를 운영 업무에 투입시켜야하는 일이 발생할 수 있다.

https://www.youtube.com/watch?v=OnK4IKgLl24
13:33


SRE vs DevOps

0개의 댓글