! This post is also available in the following languages. 영어, 일어

LINE의 프라이빗 클라우드 Verda 플랫폼의 Verda Reliability Engineering 팀을 소개합니다

이번 글에서는 LINE의 프라이빗 클라우드 Verda의 SRE(Site Reliability Engineering) 업무를 담당하는 VRE(Verda Reliability Engineering) 팀을 소개하겠습니다. VRE 팀의 박영운 님과 야마다 히데키 님, 강문중 님을 모시고 VRE 팀의 역할과 기술 스택, 향후 과제, 로드맵 등에 대해 구체적인 이야기를 나누었습니다.

 

세 분의 인터뷰이를 소개합니다

세 분 자기소개 부탁드립니다.

박영운(이하 ‘영운’): LINE의 프라이빗 클라우드 Verda의 SRE 업무를 담당하는 VRE 팀의 매니저입니다. VRE 팀은 일본과 한국에 있고 두 지역을 모두 관리하고 있습니다.

야마다히데키(이하야마다’): VRE 팀에서 시니어 엔지니어로 일하고 있습니다. 클라우드 인프라를 개발하고 운영하는 업무에는 수많은 기술 계층을 사용합니다. SRE는 그중에서도 클라우드 인프라, 특히 서버 및 OS와 같은 하위 계층에 중점을 두고 있습니다. 주요 업무를 구체적으로 말씀드리자면 OS 문제 해결과 클라우드 리소스 용량 관리, 물리적 리소스 조달 업무 개선 등이 있습니다.

강문중(이하 ‘문중’): 2019년 졸업 후 한국 팀에 합류했습니다. 입사 전에는 대학 내 연구실에서 근무했으며, 그때의 경험을 바탕으로 Verda 전체 시스템 모니터링 개발 및 운영에 참여하고 있습니다.

 

LINE에 입사한 이유를 말씀해 주세요.

영운: 이전에는 퍼블릭 클라우드 서비스를 제공하는 회사에서 IaaS(Infrastructure as a service) 영역 개발 및 운영을 담당하는 매니저로 근무했습니다. 하지만 실제 사용자의 니즈를 파악하기 어려웠고, IaaS 레이어 이외의 개발 및 운영도 경험하고 싶었기 때문에 사내 개발자들에게 프라이빗 클라우드에 대한 폭넓은 레이어의 서비스를 제공하는 Verda 팀에 합류하기로 결심했습니다.

야마다: 이전에는 기업 내 연구소에서 근무했으며 주로 기업용 클라우드 서비스 연구 개발 업무를 담당했습니다. 연구소에서는 개발부터 운영까지 한꺼번에 진행하기 어려운 부분이 있어서 사용자와 좀 더 가깝게 호흡하는 곳으로 가고 싶었습니다. 서비스 개발 및 운영이 가능할 뿐 아니라 업무에 필요한 기술 스킬 또한 제 전문 분야와 일치해서 Verda 팀에 합류하기로 결심했습니다.

문중: 클라우드 관련 분야를 전공했기 때문에 한국에서 제 전공을 최대한 살릴 수 있는 LINE에 관심을 갖게 되었습니다. 특히 Verda의 SRE 업무는 제 전공 분야와 일치했던 터라 인턴십을 거쳐 입사하게 되었습니다. 인턴십 기간 동안 인상적이었던 것은, 문제를 발견하는 것부터 해결책을 찾는 것까지 모든 과정을 스스로 주도할 수 있었다는 점입니다. 수행한 작업에 대해서 팀원들로부터 많은 피드백을 받을 수 있었고요. 굉장히 능동적인 자세로 근무할 수 있을 것 같다고 느꼈던 점이 입사를 결정한 계기가 되었습니다.

왼쪽 위에서 시계 방향으로 시니어 엔지니어 야마다 히데키 님, 매니저 박영운 님, 엔지니어 강문중 님

 

LINE에서 일하면서 느꼈던 보람을 말씀해 주세요.

영운: 신뢰성 확보라는 커다란 주제를 두고 대규모 인프라에 적극적으로 도전할 수 있는 환경이 보람으로 이어지고 있습니다. Verda는 IaaS뿐 아니라 컨테이너 기반의 PaaS(Platform as a Service) 및 DB와 같은 관리형 서비스도 제공하고 있습니다. 각각의 서비스에 대한 SRE 작업을 위해서는 전문적이고 심층적인 지식과 경험이 요구되는 한편, 서비스 간 운영 체계를 개선하거나 공통 기반 시스템을 개발할 때는 지식이나 경험의 폭이 중요합니다. 하나의 서비스에 치우치지 않고 비교적 자유롭게 움직일 수 있는 입장에 있어 다양한 도전을 할 수 있는 환경이기 때문에 그런 부분에서 보람을 느끼고 있습니다.

야마다: 제가 만든 솔루션은 물론 심지어는 코드 한 줄이 대규모 인프라 환경 전반에 영향을 주는 경우가 많은데요. 이렇듯 제가 하는 일이 서비스에 미치는 영향력이 크다는 사실에 보람을 느끼고 있습니다. 또한 사용자가 사내 개발자이므로 상세한 피드백을 받기 쉽고, 이런 점이 자연스럽게 개발이나 개선 속도를 높이는 결과로 이어진다고 생각합니다. 인프라 분야에서 Verda 만큼 개발 사이클이 짧은 프로덕트가 그렇게 흔한 편은 아니니까요(웃음).

 

VRE 팀에서는 이런 일을 하고 있습니다

VRE 팀의 구성과 팀 내 역할에 대해 말씀해 주세요.

영운: 먼저 팀 구성부터 말씀드릴게요. VRE 팀은 일본과 한국, 두 곳으로 나뉘어 있습니다. 팀원은 일본에 5명과 한국에 3명, 총 8명으로 구성되어 있고요. 팀 내 역할이라… 말로 설명하기에는 조금 복잡해서 그림으로 설명할게요. 현재 VRE 팀이 진행하고 있는 업무는 크게 세 가지로 나눌 수 있습니다.

CRE(Customer Reliability Engineering) 업무는 팀 전원이 돌아가면서 담당하고 있지만, IaaS 영역의 Reliability Engineering과 모니터링, 배포 시스템 개발 업무는 팀 내에서 역할을 분담하고 있습니다. IaaS의 경우, 6만 대 이상의 VM(Virtual Machine)과 2만 대에 육박하는 물리 서버를 베어메탈(baremetal)과 하이퍼바이저(hypervisor) 및 스토리지 용도로 사용하고 있습니다. 매년 운영 비용이 규모에 비례해 증가하고 있기 때문에 자동화 및 안정화를 통해 이 운영 비용을 절감하는 것이 VRE 팀의 주요 미션 중 하나입니다. 또한 모니터링 및 배포 대상 서비스에 사용하는 리소스도 볼륨이 상당합니다. 따라서 가능한 한 방식을 일원화하여 관리 비용과 개발자의 기능 구현 비용을 줄이려고 노력하고 있습니다. 사내 사용자 지원이나 솔루션 아키텍처 설계 업무도 VRE 팀에서 1차 대응을 담당하고 있습니다. 대응 비용을 줄이기 위해 사용자의 문의에 대한 답변을 자동으로 개발자에게 멘션으로 보내는 기능을 개발하거나, ‘VM에 연결할 수 없음’과 같은 문의에 대응해 자동으로 연결 상태를 확인하는 구조를 만드는 등 기술적인 솔루션도 적극적으로 도입하고 있습니다. 아직 개선할 부분이 많다고 생각합니다.

야마다: 위에서 언급한 팀 내 역할 분담이 각 개인 별로 명확하게 정해져 있는 것은 아닙니다. 대부분의 팀원들은 여러 영역에 걸쳐서 작업하고 있습니다. 제 경우에도 베어메탈의 설정 절차를 개선하는 작업과 리소스 모니터링 기술 개발 및 운영 등 여러 분야를 담당하고 있습니다. 역할 분담이라기보다는 각 팀원의 전문 분야를 매칭한다고 보는 편이 정확하겠네요.

문중: 저도 스토리지 서비스 관련 SRE 업무와 서비스 간 모니터링 인프라 개발 및 운영, 이렇게 양쪽을 담당하고 있습니다. 또한 서버 유지 보수 및 서비스 장애 알림 개선 프로젝트를 통해 CRE 관련 활동에도 적극적으로 임하고 있고요.

 

VRE 팀에서 사용하는 기술과 개발 환경에 대해 말씀해 주세요.

영운: Verda 사용자와 개발자, 그리고 VRE 팀과의 관계를 간단히 그림으로 표현하면 아래와 같습니다.

위 관계도에서 저희가 개발과 운영을 책임지고 있는 부분은 오퍼레이션 자동화와 CI/CD, 모니터링, 이 세 가지입니다. 사실은 더 복잡하지만 인터뷰 기사이기 때문에 간단하게 분류했습니다.

CI/CD부터 가볍게 설명하겠습니다. Ansible은 서버 구성 관리와 서비스 배포 등에 폭넓게 사용합니다. 가독성과 안정성을 향상시키기 위해 자체 모듈을 개발하고, AWX와 같은 실행 기반을 도입해 이벤트 중심 Ansible 실행을 구현하는 등 Verda 내에서 상당히 많이 사용하고 있습니다. 배포 실행과 이력 관리와 관련해서는 현재 Jenkins를 사용하고 있지만, 수동 운영을 자주 수행하기 때문에 새로운 요구 사항을 정리하며 대체 수단을 검토하고 있습니다.

다음으로 모니터링에 대해 말씀드리겠습니다. 매트릭스 관리에는 Prometheus, 로그 관리에는 Elasticsearch + Kibana와 같이 비교적 기본적인 기술을 선택했습니다. 특히 Prometheus 쪽은 서비스 프로세스와 미들웨어의 상세 현황을 더 잘 감시할 수 있도록 Go 또는 Python을 사용해 자체 익스포터를 적극적으로 개발하고 있습니다. 웹 API가 포함된 서비스의 경우에는 OpenAPI(Swagger)의 API 사양을 기반으로 Prometheus 형식의 매트릭스를 사용할 수 있으며, 다양한 서비스에 도입됐습니다.

Python은 작업 자동화에 자주 사용합니다. 간단한 스크립트를 작성해 Verda 운영에 적용하거나, 복잡한 운영을 간소화할 수 있는 인터페이스를 갖춘 중간 서비스를 개발해 사용자와 개발자에게 제공하는 데 사용하고 있습니다. 기본적으로 Slack에서 사용자 문의를 받고 있는데요. 봇을 잘 활용해 한층 더 사용자 친화적인 인터페이스를 제공할 수 있도록 개선하는 작업을 진행하고 있습니다.

장애 정보는 Alertmanager를 통해 PagerDuty라는 외부 장애 관리 및 알림 서비스에 집약해 놓았고, Alertmanager에서 AWX로 웹훅을 발급해 자동 복구 플레이북을 실행시키는 방식과 같은 이벤트 중심 복구 절차를 개발하고 있습니다.

야마다: 운영을 원활히 진행할 수 있는 툴을 구현하기 위해 Bash와 Python을 자주 사용합니다. 특히 Python은 OpenStack 및 Ansible과 잘 호환돼 사용하기 쉬워서 사용 빈도가 높습니다. 각 서비스의 CLI(Command Line Interface)를 이용해 Bash로 스크립트를 구현하는 경우도 있고요. 어쨌든 코딩 스킬은 필요합니다.

 

현재 VRE 팀의 당면 과제와 이를 해결하기 위해 어떤 활동을 하고 있는지 말씀해 주세요.

영운: IaaS 분야에서는 베어메탈 사용률이 높다는 것이 큰 과제 중 하나입니다. 현재 사내에 성능이나 안정적인 계산 능력 등이 중요하게 작용하는 이용 사례가 많아 아직 VM으로 많이 이동하지 않고 있습니다. VM과 베어메탈은 여러 면에서 관리 방식에 차이가 있는데요. 베어메탈은 운영 비용이 높기 때문에 베어메탈의 높은 사용률은 그대로 전체 운영비 증가로 이어지고 있습니다. 현재 성능 요건이 까다로운 이용 사례에 대응하기 위해 리소스 분리를 엄격하게 처리하는 VM 유형을 개발하거나 VM을 효율적으로 스케줄링해서 VM 1대당 이용 비용을 낮추는 프로젝트를 진행하며 사용자가 베어메탈에서 VM으로 이동하도록 촉진하고 있습니다.

모니터링 및 배포 영역은 전반적으로 아직 초기 단계라서 문제가 발생할 여지가 없는 곳을 찾는 게 더 어려울 정도입니다. 서비스 모니터링 시스템 개선과 배포 구조의 효율화 등 진행해야 하는 범위가 매우 넓기 때문에 효과가 있을 것 같은 부분부터 한 걸음씩 진행하고 있는 상태입니다.

각 개별 서비스에 대한 SRE 업무는 가상화 및 네트워킹과 같은 심층적인 전문 지식을 필요로 하기 때문에 VRE 팀에서 커버할 수 없는 부분이 많습니다. 다른 업무도 해야 하기 때문에 어떻게 진행해야 할지 고민하고 있습니다. 전체적으로 균형 있게 업무를 처리하기에 인원이 부족하다고 느껴서 현재 채용에 힘쓰고 있습니다.

야마다: 다른 부서와 연계하는 업무에 비효율적인 부분이 있어서 이를 개선하고 있습니다. 예를 들어 서버 증설 작업에는 데이터 센터 및 구성 관리 DB를 관리하는 부서와의 협력이 필요한데요. 상면 관리와 서버 설치, 자산 등록, 운영 툴 등록, BIOS 구성, RAID 구성, 자동 OS 인스톨러 등록, 프라이빗 클라우드 등록, 사용자 관리와 같은 일련의 업무 플로와 관련된 각 태스크의 담당 부서가 세부적으로 나뉘어 있어 각각의 업무 절차가 별개로 존재하는 상황입니다. 개별 작업은 대부분 자동화되어 있긴 하지만 작업 간 연계가 잘되지 않아 이런 상태에서는 효율을 높이는 데에 한계가 있습니다. 이를 개선하기 위해 현재 일련의 업무 플로와 업무 간 연계성을 정리한 후 모두 연결해서 자동화하는 프로젝트를 VRE 팀 주도로 진행 중입니다.

자동화 측면에서는 팀 간 워크 플로를 정리하고 매일 발생하는 작업을 정형화해서 자동화하는 작업도 수시로 진행하고 있습니다. 다만 개선 작업이 운영 소요 시간에 압박을 줄 경우 업무 지연으로 이어질 수 있으므로 적절하게 균형을 맞출 수 있도록 노력하고 있습니다.

문중: 클라우드 서비스를 개발하고 운영하는 이상, 물리 머신 및 네트워크 레이어에서 발생하는 문제를 처리하는 것도 저희가 담당해야 하는 업무입니다. 문제가 발생했을 때 이 문제가 어떤 클라우드 리소스에 영향을 끼치는지, 어느 사용자와 LINE 서비스가 영향을 받는지를 제대로 파악하고 적절하게 대처해야 합니다. 또한 사용자가 좀 더 알기 쉬운 통지 방법을 생각하고 개발하는 것도 VRE 팀의 업무입니다. 아직 연락 수단의 UX가 부족하다고 생각하기 때문에 현재 한국 팀원들을 중심으로 개선 프로젝트를 진행하고 있습니다.

VRE 팀의 향후 로드맵을 말씀해 주세요.

영운: 향후 LINE의 모든 인프라를 Verda화하는 것을 목표로 하고 있습니다. 따라서 LINE 개발자들이 안심하고 Verda를 사용할 수 있도록 개선하고 개발하는 것에 우선순위를 두고 있습니다. 단기적인 로드맵은 아래와 같습니다.

  • 현재 개발 중인 SaaS(Software as a Service) 호스팅 서비스의 SLO(Service Level Objective)/SLA(Service Level Agreement) 정의에서 시스템 가시성 및 신뢰성을 보장하는 프로세스 수립
  • 헬스케어나 핀테크와 같은 특별한 요건을 가진 서비스에 공통 인프라 기반을 제공하기 위한 인프라 및 운영 설계
  • 물리 서버 관리 비용 절감 및 최적화를 위한 OCP(Open Computing Project) 도입
  • 표준 모니터링 시스템 개발 및 프로세스 확립
  • 어드민 관리 툴의 플랫폼화
  • 개발 프로세스 공통화(CI/CD)
  • CRE/SA(Solution Architect) 액티비티 강화를 위한 체제 구축

또한 장기적으로는 규모 확장과 관련된 개선 작업도 진행하려고 합니다. LINE 서비스와 인프라의 규모가 현재보다 10배, 100배 더 커지더라도 Verda로 문제없이 관리할 수 있도록 만드는 것이 VRE 팀의 목표입니다.

 

VRE 팀에서 인재를 모시고 있습니다

마지막으로 VRE 팀에 관심 있는 분들께 한 마디 부탁드립니다.

영운: VRE 팀의 미션은 LINE의 개발자들이 Verda를 사용하면서 신뢰할 수 있도록 만드는 것입니다. LINE은 다양한 서비스를 제공하고 있습니다. 여기에 사용되는 인프라의 신뢰성을 높이는 것은 궁극적으로 LINE을 사용하는 수많은 사용자의 행복으로 이어지기 때문에 굉장히 가치가 높은 업무입니다. 업무 배경이나 서비스에 관심 있는 분, 다양한 서비스와 전문 분야에서 SRE로 일하는 것에 매력을 느끼시는 분이라면 꼭 합류해 주셨으면 합니다. 팀 구성원들 또한 단순한 클라우드 인재가 아니라 다양한 배경을 가진 사람이 모여 있어요. 관심 있는 분들은 부담 없이 연락하셔서 이야기도 듣고 궁금증도 해소하시면 좋을 것 같습니다.

야마다: ‘대규모 인프라를 관리하면서 개발도 하고 싶다!’라고 생각하시는 분에게는 최고의 선택이라고 생각합니다. 최근엔 인프라 엔지니어라고 하면 클라우드를 ‘사용하는 사람’을 지칭하는 경우가 많은 것 같은데요. 클라우드를 ‘만드는 사람’이 되고 싶다면 꼭 Verda로 오시기 바랍니다.

현재 Verda Reliability Engineering 팀에서 팀원을 모집하고 있습니다. 관심 있으신 분들은 아래 링크를 확인해 주세요!