ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 카카오뱅크 현직 전문가가 알려주는 백엔드 직군: 백엔드 개발자 vs SRE
    IT 이야기 2024. 8. 30. 14:17

    백엔드 직군을 준비하시는 분들께서 많이 궁금해하시는 실무 이야기! 카카오뱅크에서 SRE(Site Reliability Engineer)로 일하시는 현직 전문가의 이야기를 담아왔어요. 이번 포스팅에서 만나볼 이원진님은 백엔드 개발 3년 경력 + SRE 경력 2년, 총 5년의 백엔드 직군 경험이 있으신 백엔드 분야 전문가로 백엔드 직군별 업무 내용과 필요 역량을 상세히 알려주셨답니다. 백엔드 직군 취업을 준비하고 계신 분들이라면 많은 도움을 받을 수 있는 내용들을 담았으니 천천히 읽어봐 주세요. 😉

    목차
    1. 인터뷰이 소개
    2. 백엔드 개발자와 SRE 직군별 비교
      2-1. 백엔드 개발자의 역할 및 주요 업무
      2-2. SRE 역할 및 주요 업무
    3. 백엔드 개발자 및 SRE 커리어 준비 Tip
      3-1. 백엔드 개발자 필요 역량
      3-2. SRE 필요 역량
      3-3. 백엔드 직군 커리어 준비 Tip
    4. 맺음글

     

    인터뷰이 소개

    안녕하세요. 저는 카카오뱅크에서 SRE(Site Reliability Engineering) 직무로 일하고 있는 5년 차 SRE(Site Reliability Engineer) 이원진이라고 합니다. 저는 휴대폰을 비롯한 카드, 상품권 등 다양한 결제 서비스를 제공하는 다날에서 백엔드 개발자로 약 3년간 근무하였으며, 현재는 카카오뱅크에서 SRE로 3년째 근무하고 있습니다.

    저는 컴퓨터 공학을 전공했으며 취업 준비 과정에서 '정보처리기사'와 '리눅스 마스터(1급)' 자격증을 취득했습니다. 당시 백엔드 개발자를 꿈꿨기 때문에 자바, 스프링 등 백엔드 관련 기술 스택들을 익히며 취업을 준비했습니다. 취준생 시절 프로그래머스 사이트에서 코딩 테스트 준비를 많이 했었는데, 이렇게 인터뷰를 하게 되어 감회가 새롭습니다. 🙂

     

    백엔드 개발자와 SRE 직군별 비교

    백엔드 개발자의 역할 및 주요 업무

    백엔드 개발자는 서비스의 서버 사이드에서 작동하는 부분을 개발하는 직무를 말합니다. 말 그대로 백엔드(Back-End), 눈에 보이지 않는 부분을 개발하고 유지 보수하는 역할을 담당하는데요. 사용자가 직접 상호작용하는 프론트엔드와 달리 서버, 데이터베이스, 애플리케이션 로직 등 눈에 보이지 않는 부분을 책임지게 됩니다.​

    출처: https://medium.com/@adityagaba1322/streamlining-backend-frontend-integration-a-quick-guide-145eca3cca05

    백엔드 개발자는 담당하는 서비스의 기능들을 여러 클라이언트에게 제공해 주는 것을 목표로 다양한 업무를 진행하게 되는데요. 가장 주요한 업무 중 하나는 API 설계와 개발입니다. 클라이언트가 필요로 하는 기능이 무엇이며 어떤 데이터를 클라이언트에게 전달할 것인지, 데이터의 구조와 이를 저장하기 위한 데이터베이스를 설계합니다. 이러한 설계를 바탕으로 프로그래밍 언어와 프레임워크를 사용하여 클라이언트와의 통신을 위한 규약인 API를 개발하게 됩니다.

    새로운 기능을 개발하는 것뿐만 아니라 기존 기능의 버그를 수정하거나 예측 가능한 미래의 위험 요소를 사전에 제거, 개선하는 일도 합니다. 예를 들어 Deprecated된 라이브러리를 교체하거나 평균 TPS 증가로 인한 요청 처리 방식 개선과 같은 작업들을 할 수도 있지요. 레거시 코드를 개선하거나 코드의 통일성과 가독성을 높이기 위한 리팩토링도 백엔드 개발자의 업무 중 하나 입니다.​

    위와 같은 업무들을 진행하면서 공통적으로 반드시(또는 대부분) 거쳐야 하는 과정이 있는데요. 테스트와 코드 리뷰 그리고 문서화 작업입니다. 개발자는 코드를 작성하며 자신이 개발한 코드에 문제가 없는지 검증하기 위한 테스트를 진행하게 됩니다. 단위 테스트, 통합 테스트 등 여러 종류의 테스트가 있고 JUnit, JMeter, Postman 등 다양한 테스트 도구를 활용하여 테스트를 수행하게 됩니다.

    ​코드 리뷰는 자신이 개발한 코드를 동료들과 함께 리뷰하며 버그를 찾고 이슈에 대해 같이 논의하면서 품질을 향상시키는 작업입니다. 회사마다 그리고 팀마다 리뷰 방식은 저마다 다른 방식을 가지고 있는데요. 일반적으로는 개발자가 형상관리 시스템(e.g. GitHub, GitLab)에 생성한 MR(Merge Request) 또는 PR(Pull Request)을 팀원들이 리뷰를 하고 피드백을 전달하며 최종적으로 승인하는 방식으로 진행하거나 회의실에 다 같이 모여 코드를 보면서 대화하며 진행하는 방식 등으로 코드 리뷰를 하고 있습니다.

    개발자의 주요 업무 중 문서화 작업을 빼놓을 수 없는데요. 자신이 개발한 API의 명세와 데이터베이스의 명세, 테스트 문서와 버그 리포트, 릴리스 노트, 설정 가이드, 사용자 매뉴얼 등 작성해야 하는 문서들이 아주 많이 있습니다. 저는 한때 "개발자는 글을 쓸 일이 많이 없겠지?"라고 생각했었지만 그것은 큰 오산이었습니다. 문서화 작업이 많은 만큼 글을 잘 쓰는 것도 개발자가 갖춰야 할 역량 중 하나라고 생각합니다.

    💡 백엔드 개발자에게 너무나도 중요한 코드 리뷰!
    백엔드 개발을 3년 동안 경험하신 이원진 님께서 강조하셨던 코드 리뷰! 자신이 개발한 코드를 동료들과 리뷰하며 품질을 향상시키는 작업이라고 말씀해 주셨는데요. 이 코드 리뷰의 중요성을 너무나도 잘 알고 있기에, 프로그래머스 백엔드 데브코스 과정에서는 실시간으로 상주 중인 멘토에게 코드 리뷰하며 피드백을 받을 수 있도록 지원하고 있습니다. 🧑‍🏫

     

    SRE 역할 및 주요 업무

    SRE는 Site Reliability Engineer의 약자로 서비스나 시스템의 높은 가용성과 안정성 추구하는 직무입니다. SRE는 서비스의 신뢰성을 높이기 위한 다양한 일들을 주로 진행하게 되는데요. 가장 주된 업무 중 하나는 모니터링입니다. 다양한 모니터링 툴과 알람을 사용하여 서비스의 이상 징후를 확인하고 문제의 원인이 되는 지점을 파악하는 일을 진행하게 됩니다. 대부분의 IT 서비스는 24시간 운영되고 있기 때문에 모니터링은 정규 업무 시간뿐만 아니라 퇴근 이후 그리고 심지어는 자고 있는 중에도 다양한 채널(알람, 관제 등)을 통해 이루어지고 있습니다.

    이러한 모니터링 과정을 통해 인지한 서비스 장애에 대한 대응 업무도 SRE의 주요한 업무입니다. 서비스 장애의 원인은 애플리케이션 오류부터 네트워크 오류, 서버 리소스 부족 등 아주 다양하게 존재하는데요. SRE는 서비스 장애가 발생할 경우 개발자, 인프라 엔지니어 등 여러 유관 담당자들이 서비스 복구에 집중할 수 있도록 서포트 해주는 역할을 수행합니다. 서비스의 로그와 여러 지표를 분석하고 원인 파악과 해결 방안을 모색하며 서비스의 중단과 사용자의 불편함을 최소화하는 일을 합니다.

    서비스 장애는 발생하지 않는 게 가장 좋겠지만 여러 이유로 인해 현실에서는 서비스 장애가 종종 발생하게 됩니다. 장애 대응도 중요하지만 이에 못지않게 재발 방지를 위한 대책을 세우고 사전에 예방하는 일들도 대단히 중요합니다. SRE는 유사한 장애가 다시 발생하지 않도록 장애에 대한 회고, 리뷰를 하며 취약점이나 개선 사항에 대해서 적절한 조치 방안을 세우고 적용하는 일들을 수행합니다.

     

    백엔드 개발자 및 SRE 커리어 준비 Tip

    백엔드 개발자 필요 역량

    백엔드 개발자를 목표로 커리어를 준비하신다면 일단 가장 먼저 자신 있고 능숙하게 다룰 수 있는 프로그래밍 언어를 최소 하나쯤은 무기로 가지고 있어야 합니다. 서버 사이드 개발에 사용되는 언어는 자바, 파이썬, 자바스크립트, 코틀린 등 아주 다양합니다. 저는 취업 준비 과정부터 현재까지 자바를 주력으로 사용하고 있는데요. 최근 파이썬, 코틀린, Go 등 최신 트렌드의 언어를 사용하는 회사도 많이 생겨나고 있지만 아직까지도 많은 회사들이 자바와 자바 진영의 프레임워크를 사용해서 서비스를 개발하고 있습니다. 시장에서 자바에 대한 수요가 많은 만큼 자바를 선택하는 것도 좋은 선택이라고 생각합니다. 프로그래밍 언어를 학습할 때 언어의 문법을 익히는 것도 중요하지만 메모리 구조와 관리, 데이터 구조, 예외 처리 등 각각의 프로그래밍 언어가 가지고 있는 특징에 대해서 깊이 있게 이해하는 것이 더욱 중요합니다.

    프로그래밍 언어 외에도 데이터베이스, 형상관리, 프레임워크 등 여러 부분들을 학습해야 한다는 것은 다들 많이 보고 들었으며 잘 알고 계실 거라고 생각합니다. 그래서 저는 추가적으로 네트워크에 대한 이해가 중요하다고 말씀드리고 싶은데요. 결국 서비스는 네트워크 통신으로 이루어지는 것이기 때문에 이를 지탱하는 네트워크 프로토콜에 대한 이해가 아주 중요합니다. 특히, HTTP와 TCP/IP와 같이 서버 통신의 기본이 되는 프로토콜은 반드시 학습하고 내 것으로 만들어야 합니다. 저는 O'REILLY의 <HTTP 완벽 가이드>라는 책을 신입 개발자 시절부터 현재까지도 옆에 두고 필요할 때마다 꺼내보고 있습니다. 그만큼 네트워크는 백엔드 개발 실무에 있어 아주 중요하며 근간을 지탱하는 기술입니다.


    SRE 필요 역량

    SRE를 목표로 준비하시는 경우에도 크게 다르지는 않습니다. SRE 직무 또한 연관된 다양한 개발을 하며 장애 예방과 대응을 위한 코드 분석도 하기 때문에 프로그래밍 언어를 능숙하게 사용할 수 있어야 합니다. 다만, SRE 직무 특성상 코드 레벨보다는 Linux/Unix 등 운영체제 시스템에 대한 지식TCP/IP, DNS, HTTP, 로드 밸런싱 등 네트워크 기본 지식을 쌓는 것이 더 중요하다고 생각합니다. 더 나아가서 nGrinder, JMeter 등 여러 도구를 활용한 성능 테스트를 경험해 보거나 클라우드 서비스, 컨테이너 환경 구성, 쿠버네티스를 활용한 오케스트레이션을 구성해 보는 것도 SRE 직무를 수행하는 데 있어서 도움이 될 수 있습니다.

    💡 Summary: 현직자가 알려주는 백엔드 개발자와 SRE가 가져야 할 스킬!

    백엔드 개발자와 SRE 두 직군 모두 프로그래밍 언어를 능숙하게 사용할 수 있어야 합니다. 다만 백엔드 개발자는 데이터베이스, 형상관리, 프레임워크 및 네트워크에 대한 이해가 매우 중요한 반면 SRE는 Linux/Unix 등 운영체제 시스템에 대한 지식과 TCP/IP, DNS, HTTP, 로드 밸런싱 등 네트워크 기본 지식을 쌓는 것이 중요합니다.

     

    ​백엔드 직군 커리어 준비 Tip

    저는 백엔드 개발 직무와 SRE 직무 어느 것을 목표로 준비하든 준비 과정에서 자신이 학습한 것들을 온전히 자신의 것으로 만드는 게 중요하다고 생각합니다. 저는 기술 블로그를 운영하며 제가 학습한 내용들을 기록했는데요. 다른 사람들에게도 공개된 공간인 만큼 정확하고 이해하기 쉽게 내용을 전달하려고 노력하다 보니 학습한 것들을 제 것으로 만들 수 있었습니다. 또한 문서화 능력도 향상되어 실제 회사에서 Wiki 작성 등 문서화 업무를 진행하는데도 많은 도움이 되었습니다.

    개발자로 취업하기 위해 거쳐야 하는 관문 중 하나인 코딩 테스트는 프로그래머스를 많이 활용하여 준비했는데요. 많은 IT 회사들이 프로그래머스를 통해 코딩 테스트 전형을 진행하기 때문에 프로그래머스의 코딩 테스트 플랫폼(e.g. IDE)에 익숙해지는 것이 좋을 것 같다고 생각했고 잡페어, 썸머/윈터 코딩, 공채 기출 등 다양한 실전 문제들을 풀어보는 것들도 실제로 코딩 테스트 합격에 큰 도움이 되었습니다.

    왼쪽: 이원진님의 기술 블로그 중 일부 발췌 / 오른쪽: 프로그래머스 코딩테스트 페이지

     

    💡 프로그래머스 데브코스에서는 WIL(Weekly I learned)*을 진행하는데요. 매주 배운 내용을 정리하여 글로 작성하면서 학습한 내용을 온전히 내 것으로 만들고, 이를 동료들과 공유하고 피드백을 나누며 부족한 점을 보완하고 성장하기 위함입니다. 이 과정에서 실무에 꼭 필요한 문서화 능력 및 협업 능력까지 기를 수 있답니다. 💪
    (*일부 코스에 한하여 진행)

    💡 이원진 님께서 취준생 시절 적극적으로 활용하셨다는 프로그래머스 코딩 테스트! 이원진님 뿐만 아니라 대한민국 개발자 절반 이상이 프로그래밍 학습 시 프로그래머스 코딩 테스트를 사용하고 있다는 사실* 알고 계셨나요? 개발자로 취업을 준비하시고 계시다면 저희 프로그래머스 코딩 테스트 꼭 활용해 보시길 추천드려요. 😉
    (*23년도 프로그래머스 개발자 설문조사 결과)

     

    글을 맺으며

    지금까지 제가 경험한 백엔드 개발 직무와 SRE 직무에 대해 소개해 드렸는데요. 백엔드 개발자는 기능의 구현과 시스템 성능을 책임지며, 사용자에게 가치를 전달하는 코드와 아키텍처를 만듭니다. SRE는 이 시스템이 실제 환경에서 신뢰성 있게 운영되도록 보장하고, 예기치 않은 문제를 예방하며, 대응하는 역할을 맡고 있습니다. 이 두 직무가 가진 역할은 단순히 분리된 것이 아니라, 각각의 전문성을 바탕으로 함께 성장하며 서비스의 안정성과 품질을 높여가는 중요한 파트너라고 할 수 있습니다. 긴 글 읽어주셔서 감사합니다.

    글 작성: 이원진 (카카오뱅크 SRE)
    편집자: Chloe (Grepp 콘텐츠마케터)

     

    프로그래머스 백엔드 엔지니어링 데브코스 👩‍💻
    개발자 평가 서비스 분야의 리더, 프로그래머스만의 채용 및 평가 데이터를 집중 분석해 제작한 백엔드 과정. 
    1,700개 기업의 채용 데이터를 완벽 분석하여 취업에 필요한 핵심 기술만을 엄선한 커리큘럼으로 실무 환경에 바로 투입될 수 있는 백엔드 주니어 개발자로 성장하고 싶으신 분들께 최적인 부트캠프 입니다.

    "프로그래머스 백엔드 데브코스는 탄탄한 커리큘럼뿐만 아니라 현직자 특강, 채용 연계 프로그램 데브코스 등 다양한 취업 연계 서비스를 제공해 단순히 교육으로 끝나는 것이 아니라 채용 과정까지 지속적으로 서포트 해준다는 점이 매력적으로 느껴집니다"
    - 카카오뱅크 SRE 이원진 님과의 인터뷰 중

    댓글

Programmers