Categories
컴퓨터

if (kakao) dev 2019 (1) – 카카오뱅크 모바일앱 DevOps

날씨가 더웠던 몇 달 전. if (kakao) dev 2019 세미나 참석에 신청했으나 광탈하여 슬펐다. 그러나 다행히도 세미나 발표자료와 영상을 온라인에 모두 공개를 하였기에 앞으로 혼자서라도 발표자료와 영상을 보며 필요한 내용을 습득하고자 한다.

총 이틀 동안 하루에 25개 세션을 발표했고, 각 영상은 대략 50분 정도 되는 것 같다. 이걸 다 보는 데 얼마나 걸릴까? 그래서 아래처럼 계산을 해봤다.

50개 * 50분 = 총 2,500분

매일 2개 영상을 듣는다고 하면 100분이니까 25일 정도면 모두 들을 수 있다. 그런데 주말과 금요일에는 좀 더 많이 볼 수 있으니 11월 까지는 모두 봐야겠다.

오늘 본 영상은 카카오뱅크 모바일앱 DevOps 이다. 카카오뱅크에서는 문화기술을 통해 개발(Development)과 운영(Operations)이 물흐르듯이 흐르도록 만들어가고 있다. 아래는 발표에서 나온 카카오뱅크 모바일앱의 DevOps 전체 구조다.

구체적으로 어떤 기술을 사용했는지 짚어가며 말을 하지 않았던 점은 아쉬웠다. 그래도 발표 중에 언급한 내용을 토대로 정리하면 아지트, Jira, Gitlab, SonarQube, 자체 개발한 Chrome Extension(리뷰 도우미), 각종 테스트 도구, 개발 관련 알림 Bots, 앱스토어 리뷰 봇, 주간온도 체크 프로그램 등을 사용하고 있다.

두 사람이 짝을 이루어 개발을 하는 페어 프로그래밍(Pair Programming)을 자유롭게 진행하고 있다. 페어 프로그래밍은 직접 키보드를 잡고 코드에 집중하는 행위자와 좀 더 큰 그림을 보는 관찰자로 이루어진다. 아무래도 하나의 코드를 4개의 눈이 함께 보기 때문에 버그가 감소할 뿐만 아니라 좀 더 생산적인 프로그래밍을 하게 된다. 그리고 무엇보다 함께 성장할 수 있다는 점이 개발자한테는 가장 큰 장점이라 하겠다.

개발한 코드는 운영 코드로 Merge 되기 전 반드시 3명 이상으로부터 Confirm을 받아야 하는데 이 중 1명은 본인이 직접 선택한다. 대부분의 리뷰는 GitLab을 통해 온라인 리뷰가 이루어지지만 규모가 크거나 중요한 코드는 다양한 의견을 빠르게 들을 수 있는 오프라인 리뷰로 진행된다.

또한, 카카오뱅크에서는 개발 코드의 운영 코드 Merge는 책임자만 할 수 있다. 이전에는 여러 사람이 함께 Merge를 할 수 있었는데 (구체적으로 언급은 하지 않았으나) 관리의 문제로 권한을 분리했다.

그리고 테스트의 경우 변경된 내용만 검증하는 Sanity 테스트를 QA 에서 먼저 수행한 후, 이를 통과했을 때만 통합테스트를 수행하여 불필요한 리소스 낭비를 방지한다.

Sanity 테스트는 주요 테스팅 업무를 수행하기에 충분히 적합한지 판단하는 테스트다. 예를 들어, A라는 기능이 앱에 추가 되었다면, A라는 기능의 동작여부만 테스트한다. 이를 통과한 후에 통합테스트가 이루어진다.

발표 내용 중 재직중인 곳에 도입하고 싶었던 것 중 하나는 시나리오 테스트의 자동화다. 카카오뱅크는 매일 아침 9시에 시나리오 테스트가 자동으로 실행된다. 이는 마치 우리가 사람을 통해 하는 일일점검과 같은데, 아무래도 기계가 하다보니 더 빠르고 더 정확하다고 할 수 있다. 참고로 운영시스템 배포 전에도 이 시나리오 테스트를 통과해야 배포가 된다.

그리고 스프린트를 마친 후 반드시 회고(retrospect)를 한다는 게 보기 좋았다. PMP 이론에 따르면 모든 프로젝트는 반드시 Lessons Learned 라고도 부르는 회고를 해야 끝난다고 가르친다. 그러나 내가 속한 조직은 이를 제대로 실행하지 않는다.

또한, 자발적인 기술세미나를 통해 서로 성장하는 문화가 참 부러웠다. 나는 이곳에서 스스로 아등바등하기도 하고, 지쳐서 나가떨어지기도 하는데, 저기서는 기술을 사랑하는 사람들이 자발적으로 저렇게 지식을 공유하니 더 나은 개발자가 되지 않으래야 않을 수가 없을 것 같다.

끝으로 각 팀원들과 매일 아침 10분 스크럼 미팅을 하는 것과 한 주간의 기분을 작성하는 주간온도가 인상적이었다. 나의 오랜 중학교 친구이자 스타트업 대표이기도 한 S군이 이와 유사한 걸 하고 있다는 걸 알고 있었는데, 이 발표를 보고 나도 해야겠다 싶었다. 나는 일일온도를 통해 내가 하루 하루 잘 살고 있는지 점검해서 더 행복한 삶을 살기 위한 도구로 활용할거다.

‘카카오뱅크니까 저렇게 할 수 있는 거야. 우리는 안돼.’ 라고 생각하는 사람들이 많을 것 같다. 하지만 작게라도 조금씩 변화를 만들어 갈 수 있는 것 아닐까? 카카오뱅크 모바일앱 개발 및 운영팀도 이러한 DevOps 개발문화를 지키기 위해 우선순위를 결코 낮추지 않고, 항상 1순위로 놓았다고 한다.

결국, 무엇을 하느냐 하지 않느냐는 그 일을 우선순위에 두느냐 두지 않느냐가 결정한다.

이상으로 첫 번째 if (kakao) dev 2019 영상 리뷰를 마친다. 다음에는 메인 발표로 보이는 카카오에서 컨테이너를 사용하는 방법을 들으려고 한다.

다음 편은 <카카오에서 컨테이너를 사용하는 방법> 이다.

P.S. 행사 간 사람 리뷰(링크)를 봤는데 라이언 스티커도 주고 개발자 옷도 주고 완전 부럽다.

글이 도움이 되었다면 댓글 및 공유~ 펭펭~

발표자료는 여기를 클릭하면 받을 수 있다. 발표 영상(mp4)은 아래 링크를 클릭하면 된다. 유튜브에 안올라가 있어서 검색해도 안 나온다.

(영상) 카카오뱅크 모바일앱 DevOps – if(kakao) dev 2019

Hits: 1211

By 라이언양

라이언양 연구실 주인

One reply on “if (kakao) dev 2019 (1) – 카카오뱅크 모바일앱 DevOps”

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다