개인회원 메뉴

개인회원 정보

이력서 사진
이력서 사진 없음
로그인 링크
로그인
회원가입 링크
아직 회원이 아니세요?

개인회원 서비스

JOBKOREA

직무인터뷰

직무인터뷰 상세

IT/SW/인터넷

(주)우아한형제들

우아한형제들 심규석 SRE 엔지니어

소속
심규석 SRE 엔지니어
등록일자
2021.09.28
조회수
5,753

우아한형제들

심규석 / SRE 엔지니어

 

Interview 01

담당업무 소개

 

우아한형제들의 SRE 엔지니어, 규석 님의 일과를 소개해주세요.

안녕하세요, 클라우드스토리지개발팀에 심규석입니다.

최근에도 전사 재택근무가 이어지고 있어 아침 9시 반에 집에서 근무를 시작하고 있어요.
가장 먼저 메일이나 슬랙 메시지를 확인하며 예정된 유지보수 작업이 있는지, 외부에서 요청된 작업은 어떤 것이 있는지, 점검할 시스템이 있는지 등을 확인하고 파악합니다.

다음으로는 지라 이슈 티켓을 확인하고 하루 동안 진행할 주요 업무를 계획하고 있습니다. 또 어제 진행한 일에 대해 공유할 내용을 간단하게 생각해보고 정리도 해요. 이렇게 출근 직후에는 하루에 진행할 업무와 회의 등을 계획하고 정비하는 시간을 보냅니다.

오전 10시가 되면 스크럼 미팅에서 팀원 간에 업무 계획을 공유하고 있어요. 재택근무가 활성화되어있기 때문에 Zoom을 활용해 원격으로 미팅이 진행됩니다. 아무리 단순한 질문이더라도 서로 편하게 공유할 수 있는 분위기를 만들기 위해 노력하고 있는데요. 팀분들과 대화하는 시간을 가지면서 각자가 맡은 업무를 더 빠르게 해결하는 데 도움이 될 수도 있고, 막히던 문제를 해결하는 단서가 되는 경우도 있습니다. 마치 아무리 힘을 줘도 안 열리던 잼 뚜껑을 지나가던 사람이 쉽게 열어주는 그런 상황이랑 비슷한 것 같아요.

또한 업무회의 외에도 일과 중에 팀원분들과 온라인 티타임도 종종 가지는데요. 출근을 하지 않아 팀원 간에 한 공간에서 마주하거나 접촉하는 기회가 없기 때문에 소소하게 이야기를 나눈다거나, 간단한 질문 등을 주고받기엔 어려움이 있었어요. 그래서 팀에서 주기적으로 가지는 티타임도 생겼죠. 개발에 집중하다가 편안한 분위기에서 팀원들과 이야기를 나누면서 다시 집중할 수 있는 에너지를 얻기도 하고 또 개발 과정에서 어려움을 겪었던 부분은 아이디어를 얻어가기도 합니다.

저는 ‘회의가 없는 날’에는 개발업무에 몰입할 수 있도록 일과를 계획해요. 일정이 급한 팀 회의가 아니라면 가급적 다른 날에 진행하도록 서로 배려하여 회의 일정을 조율하고 있습니다.

Interview 02

주요 역할 및 과제

 

 

우아한형제들에 합류하신 이후부터 현재까지 맡아오신 주요 역할 및 업무 세 가지만 소개 부탁드립니다.

대표적으로 참여한 과제 세 가지로 소개드릴게요. 먼저, 배포 플랫폼이 있고요. 사내 백오피스의 인증 및 권한을 제공했던 백오피스 인증 플랫폼, 그리고 현재 팀의 업무인 메트릭 모니터링 시스템입니다.

가장 먼저, 배포 플랫폼은 우아한형제들에 합류해서 처음 진행했던 프로젝트인데요. 기존에 사용하던 AWS의 PaaS 배포를 대체해서 상대적으로 빠른 시간 안에 배포될 수 있도록 하는 것에 대한 여러 배포 전략을 지원하는 프로젝트였습니다. 무엇보다 배포한 뒤 변경된 부분에 문제가 발생한다면 빠르게 롤백 할 수 있도록 대응하는 것이 중요했어요.

두 번째 백오피스 인증 플랫폼은 고객 서비스가 아닌 백오피스를 위한 인증 및 권한을 위한 프로젝트입니다. 사내의 여러 팀이 인증 및 권한 기능을 중복으로 개발하는 데서 발생하는 비용을 줄일 수 있도록 하는 과제였어요. 플랫폼을 통해 백오피스마다 동일한 수준의 보안 요구 사항을 달성하고 개인정보 처리 및 접근 기록 등을 점검할 수 있도록 보안팀과 협업하여 요구 사항을 정리했던 기억이 납니다.

백오피스 인증 플랫폼은 스프링부트와 Kotlin으로 백엔드 서버를 작성했던 프로젝트였는데요. 그 당시에는 사내에 백엔드 서버를 Kotlin으로 개발하는 프로젝트가 없었지만, SRE 엔지니어분들이 개발하던 여러 플랫폼 서비스들은 kotlin으로 개발을 시작했어요. 비록 익숙하지는 않았지만 언어 자체에서 많은 함수를 제공하여 간결하게 표현할 수 있었습니다. 얼마 전에는 여러 팀에서 백엔드 및 안드로이드 애플리케이션을 Kotlin으로 작성했던 경험을 나누는 사내 Kotlin Meetup도 진행되었고 경험으로 알게 된 문제 해결방법, Java와 Kotlin과의 차이 등을 주제로 이야기를 나누었습니다.

마지막으로 클라우드스토리지개발팀에서는 사내 여러 시스템의 지표를 확인하고 이상이 감지되었을 때 알림을 전달해 주는 모니터링 시스템을 개발하고 운영하고 있어요. 앞서 소개해 드린 배포 플랫폼이 장애 상황에서의 롤백 및 빠른 수정사항 배포가 중요했다면 모니터링은 장애의 인지 및 문제점을 확인하기 위해서 중요합니다.

먼저, 모니터링 시스템은 크게 세 가지로 나눌 수 있어요. 메트릭이랑 로그 그리고 알람입니다. 현재 제가 맡고 있는 과제이니 조금 더 자세히 소개해 드릴게요. 각 시스템은 여러 오픈 소스들을 사용해 직접 구성하여 운영하고 있는데요. 프로메테우스(Prometheus), 로키(Loki), ELK(Elasticsearch Logstash Kibana)를 사용하고 있고 이렇게 구성된 모니터링 시스템으로 우아한형제들의 여러 서비스의 애플리케이션, 인스턴스 그리고 클라우드 리소스들의 지표와 로그를 수집해서 가시화하고 있습니다.

또한 모니터링 시스템의 특장점은 많은 데이터의 실시간 처리와 저장입니다. 여러 서비스로부터 수집하는 정보들은 유실이 없어야 하고 즉각적으로 조회할 수 있어야 하죠. 이처럼 내구성 있는 모니터링 시스템을 위해 어떻게 분산해서 처리할지 등의 아키텍처를 고민합니다. 또 많은 데이터를 어떻게 저장하는지에 따라 비용의 차이가 클 수 있기 때문에 이런 부분들도 동시에 고려하고 있습니다.

지표를 수집해야 하는 대상은 EC2(Elastic Compute Cloud) 인스턴스(Instance), JVM(Java Virtual Machine) 웹 어플리케이션, AWS 클라우드 리소스 등 다양하게 존재하고, 이에 따라 각 지표의 저장 및 조회가 Cloud Watch, New Relic, ELK 등 여러 곳에서 이루어지고 있어요. 이렇게 파편화되어있다면 사용자 입장에서 각자 다른 방법으로 적용 및 조회해야 하므로 번거롭고, 또 중요한 지표에 대한 알람 설정을 놓칠 수도 있습니다. 제가 맡은 메트릭 모니터링은 여러 군데에서 저장되고 조회하고 있는 지표와 로그를 한곳에서 사용하기 쉽게 제공하고, 새로운 서비스를 개발하며 동일한 수준으로 시스템 가시성을 확보할 수 있도록 자동화하는 것을 고민하고 있습니다.

메트릭 모니터링 프로젝트가 완성되면 장애를 이전보다 빠르게 탐지하고 문제해결을 위한 화면을 제공할 수 있을 것으로 생각합니다. 또한 이렇게 측정된 데이터를 활용해 구성원들이 사업적인 통찰력도 빠르게 확보할 수 있을 것으로 예상하고 있습니다.

Interview 03

과제의 우선순위

 

 

여러 과제의 우선순위를 결정하는 과정을 말씀해 주세요.

저희 팀은 분기 단위로 어떤 업무를 우선적으로 선택하여 진행할지 이야기를 나누는데요. 각각의 과제가 완료되었을 때 실제 사용하는 사람들에게 어떠한 가치를 제공해 줄 수 있는지에 집중하여 고민합니다. 정리하면 사용자에게 더 큰 가치를 전달하는 업무들을 먼저 고려하고 있습니다.

예를 들면 “사용자가 언제든 오래된 로그를 직접 조회할 수 있다”와 같이 사용자 입장의 언어로 정의해본 후, 이를 위해 필요한 기술 선택이나 개발 등 상세한 사항들은 스프린트 플래닝에서 논의합니다. 설정 튜닝(Tuning)을 한다거나 파일 저장 방식을 바꾼다거나 또는 개발과정을 자동화하는 등 자유롭게 제안하고 최종적으로 작업을 수행하는 사람이 결정하게 됩니다.

스프린트에서 계획된 업무는 필요하다면 진행 과정에서도 우선순위를 유연하게 변경하기도 합니다. 더 좋은 방법이 생각났다면 팀 논의 일정을 만들어서 서로 의견을 제안하고 경청하며 과제 수행의 방향을 변경하거나 우선 실행되어야 하는 업무들을 추가할 수도 있습니다.

이러한 과정들은 팀 내에서 자율적으로 이루어지고 있어요. 사용자 관점에서 가치를 전달하기 위한 목표 및 예상되는 작업과 일정들은 엔지니어들이 직접 결정합니다. 팀원들과 함께 나눠서 진행해야 하는 업무나 주요 변경 사항의 배포 등 의논이 필요한 것들 또한 구성원 개개인이 스스로 고민하고 요청하고 있어요.

Interview 04

역량에 관한 생각

 

 

우아한형제들의 SRE 엔지니어 구성원분들은 어떠한 역량을 갖추셨는지 궁금합니다. 대표 역량 세 가지만 말씀 부탁드립니다.

우아한형제들은 많은 시스템이 오픈소스 소프트웨어를 기반으로 구성되어 있습니다. 또한 시스템이 여러 부서에 걸쳐 사용되기 때문에 가용성 있는 아키텍처에 대한 이해가 필요합니다. 예를 들면 HA 구성이나, 클러스터링과 같은 것들을 고려할 수 있어야 합니다.

즉, 내구성 있는 시스템과 서비스 성장에 따라 확장할 수 있는 아키텍처를 고민하고 구성하는 역량이 필요해요. 가용성 및 확장성을 위한 아키텍처는 많은 컴포넌트를 배포해야 합니다. 또 확장하는 경우 새로운 인스턴스를 원하는 설정으로 실행하여 기존 클러스터에 추가될 수 있어야 해요. 이런 작업은 사람이 직접 하나하나 수행하고 컴포넌트의 상태를 관리하기 어렵습니다. 이런 점을 개선하기 위해 테라폼(Terraform) 이나 플루미(Pulumi)를 통해 인프라를 코드로 작성하고 있어요.

두 번째로 우아한형제들의 SRE 엔지니어는 다양한 언어로 개발하고 있어요. 저희 팀에서는 Go 언어로 백엔드 API 서버를 개발하고, 필요한 페이지들은 주로 리엑트(React)를 사용하고 있습니다. 앞에서 말씀드렸던 지표 수집을 위한 익스포터(Exporter)도 Go 언어로 개발하고 있고요. 단순히 팀에서만 사용할 스크립트를 작성하는 것이 아니기 때문에 읽기 좋고 쉽게 확장할 수 있는 구조의 코드를 고민하고 만들어낼 수 있어야 해요. 또한 자동화된 단위 테스트 작성도 자신이 개발한 코드라면 기본적으로 포함해서 리뷰할 수 있어야 합니다.

세 번째는 프레임워크나 오픈소스의 내부 작동원리를 코드만으로 파악할 수 있는 역량이 필요합니다. 시스템에 장애가 발생하는 경우, 원인을 분석하고 파악하기 위해서는 사용하는 프레임워크 및 라이브러리에 해당하는 버전의 코드를 확인하는 일들이 필요합니다. 또 많은 트래픽을 처리하기 위해서 설정값을 조절하거나 개선이 필요할 때에도 해당 오픈소스의 코드를 확인해야 하는 경우가 자주 발생합니다. 사실, 코드로 인프라를 관리하고, 확장 가능한 아키텍처를 처음부터 모두 고려해서 달성하는 것은 어려운 일이에요. 저의 경우도 처음 배포 플랫폼 개발에 참여했을 때에는 테라폼이나 쿠버네티스같은 클라우드 관련 기술 셋이 익숙하지 않았어요. 하지만 동료 엔지니어와 지식을 공유하며 업무를 계획하고, 문제를 해결해 나가면서 릴리즈할 수 있었습니다. 비록 시작은 젠킨스(Jenkins)를 패키지 관리자를 통해 직접 설치했었지만 릴리즈 시점에는 쿠버네티스를 런타임으로 빌드 및 배포 시점 요구 사항에 맞춰 노드를 확장할 수 있는 아키텍처로 10개 이상의 AWS 계정에서 사용할 수 있었습니다.

먼저 원하는 플러그인과 설정의 젠킨스를 생성하기 위해 필요한 것들을 컨테이너에 넣어 도커라이징(Dockerizing)을 했습니다. 이후에 배포할 서비스를 실행할 AWS 클라우드 리소스 생성을 자동화하기 위해 테라폼이 도입되었어요. 자바 외의 다른 빌드 환경은 쿠버네티스를 통해 필요한 환경의 노드를 선택할 수 있었고 또한 여러 배포 요청에 유연하게 노드를 확장할 수 있었어요. 단계적으로 문제를 해결하면서 아키텍처가 변경되었습니다.

만약 처음부터 까다롭고 복잡한 요구 사항을 충족해야 하거나 어떠한 상황에서도 장애가 발생하지 않는 플랫폼을 개발해야 하는 상황이었다면 그 과정이 매우 힘들었거나 최악의 경우 실패했을 수도 있을 거예요. 하지만 엔지니어가 스스로 계획하고 결정할 수 있는 환경이었기 때문에 동료들과 함께 목표를 고민하고 기존의 어려움을 단계적으로 해결하며 달성할 수 있었다고 생각합니다.

경험이 많은 시니어 개발자라면 여전히 빠르게 성장하는 우아한형제들 서비스의 많은 트래픽을 처리하며 여러 분야의 전문가와 신뢰성 있는 플랫폼 개발을 수행하며 가치를 만들어내실 수 있고, 역량을 키우고 싶은 주니어 개발자라면 동료 개발자와 함께 고민하고 기여하며 성장하실 수 있는 환경이라고 생각합니다.

Interview 05

우아한형제들 조직문화

 

 

규석 님께서 우아한형제들을 선택하신 가장 큰 이유는 무엇이었나요?

우아한형제들에 관심을 두게 되었던 계기는 의외로 특정 기술이 아닌 ‘송파구에서 일을 더 잘하는 11가지 방법’이었는데요. 그 이유는 제가 당시에 읽고 있던 ‘에어비앤비 스토리’라는 책 때문이에요.

책 제목 그대로 에어비앤비라는 회사가 시작부터 성장해가는 과정에 관한 책이었습니다. 회사가 성장함에 따라 창업자 세 명과 몇 명의 직원으로 더는 사업을 지속할 수 없어서 채용이 필요한 시점이었어요. 이때 에어비앤비는 회사의 비전과 핵심 가치를 고민하고 회사 문화를 만드는 일을 우선으로 여겼다고 합니다. 이것을 기준으로 함께 일할 사람을 선택하면, 굳이 설명하지 않아도 창업자들과 동일한 방법으로 회사에 기여할 것이라고 기대했다고 해요. 이런 사람들이 모여야 어떻게 일해야 하는지 통제하지 않을 수 있고, 이를 통해 혁신이 있을 수 있다는 내용이었어요. 그뿐만 아니라 고민해서 정의해둔 문화나 핵심가치의 내용이 그 자체로도 좋았던 기억이 납니다.

물론 우아한형제들은 에어비앤비와는 추구하는 가치나 문화는 달랐는데요. 그럼에도 우아한형제들의 기업문화를 접하는 순간 매우 많은 고민을 통해 만들었다는 것이 느껴졌어요. 그 외에도 ‘우아한 비전’이라던가 ‘핵심가치’ 등 다른 것들도 눈에 띄었고, 마찬가지로 어떤 회사가 되고 싶은지 그리고 어떻게 회사가 계속 성장할 것인지에 대한 많은 고민이 있다는 것이 느껴졌습니다. 회사가 이렇게 만들고 싶은 문화를 고민했다면 그에 상응하는 사람들이 모여있으리라 생각했고 그렇다면 충분히 좋은 곳일 거라는 기대가 생겼습니다. 단순히 서비스를 사용할 때에는 잘 몰랐지만, 관심을 가지게 되니 수수료 체계도 다른 곳과는 다르다는 것을 알게 되었어요. 이러한 차별화된 서비스 가치관이 있음에도 불구하고 업계의 선두에 있었기 때문에 분명 성장의 기회가 될 수 있겠다는 생각이 들어 선택하게 되었습니다.

 

SRE 엔지니어가 되고자 하는 개발자분들께 클라우드 스토리지개발팀을 자랑해 주세요!

클라우드 스토리지개발팀은 SRE 엔지니어와 데이터베이스 엔지니어로 구성되어있는 팀입니다. 그렇기 때문에 데이터의 수집부터 분산 처리, 효율적인 저장 및 빠른 데이터 조회를 제공하기 위한 과정 전반에 걸쳐 전문성을 발휘하며 성장할 기회가 있습니다.

또한 앞서 소개해 드린 SRE 엔지니어 직무 외에도 다양한 기술 스택과 분야에 걸쳐 전문성을 발휘하고 있는데요. CI/CD, 쿠버네티스, 데이터 파이프라인, 비즈니스를 위한 플랫폼 서비스, 옵저버 빌리티 도구들, 장애 및 서비스 업타임 관리, 포스트모텀 등 자세하게 언급하지 못한 여러 영역에서 많은 유관 부서들과 협업하고 있습니다.

저희 팀은 다양한 연차와 전문성을 갖춘 팀원들로 구성되어 있는데요. 업무의 자율성 측면에서 팀내 대화와 배움의 기회가 부족하진 않을까 우려할 수 있을듯합니다. 그 점에 관해서는 팀원 간의 고른 역량 강화와 좋은 기술을 선택하기 위한 스터디도 꾸준하게 진행하고, 문화적인 측면도 고려해 온라인 티타임, 하우스 룰 등을 만들어 진행하고 있어요.

우아한형제들의 여러 서비스는 여전히 빠르게 성장하고 해결해야 하는 도전적인 문제들이 있어, 재미있게 개발할 수 있습니다. 이렇게 다양하게 열린 기회와 즐거움을 함께하며 같이 성장하면 좋겠습니다.

 

>> 우아한형제들 기업정보 보러가기

>> 지금 채용중인 IT 직무 보러가기

저작권은 잡코리아(유)에 있으며, 무단전재 및 재배포를 금지 합니다.

‘(주)우아한형제들’ 다른 직무인터뷰

‘(주)우아한형제들’ 진행 중인 채용공고

‘(주)우아한형제들’ 다른 취업정보