마이쿤 신입 온보딩: 스푼 라디오를 이루는 기초공사

Junior Choe
Spoon Radio
Published in
7 min readDec 26, 2019

안녕하세요.

스푼 라디오라는 서비스를 제공하는 주식회사 마이쿤의 데브옵스 엔지니어 Jonathan(최준영)입니다.

2019년 9월에 서버 인프라 팀에 입사하여 느낀 점, 샘플 인프라 구성 맛보기를 알려드리고자 합니다.

그 과정에서 제가 마이쿤에서 받은 도움이 새로운 인원이 기존 조직에 적응하는데 어떤 영향을 미치는지도 함께 적어보려고 합니다.

신규인원을 위한 Welcome on board

멘토링

신입이던 경력이던 새로운 장소에서 업무를 시작하게 되면 기존 조직이 일하던 방식을 알아야 하고 그 업무 흐름을 파악해야 합니다. 학교처럼 하나부터 열까지 알려주진 않더라도 업무를 위해 필수적으로 알아야 하는 것들(e.g 서비스 흐름)을 정확하게 알려주고 제가 궁금한 것들을 해소할 수 있는 시간을 갖게 됩니다. 이 시간동안 팀리드 및 사수와 함께 의논하고 제가 할 수 있는 것들을 추려서, 스푼라디오의 인프라를 전개하고 그 위에서 돌아가는 서비스 플로우 도식화, 자동화된 인프라 환경 구축을 진행하기로 하였습니다.

중간점검

입사 후, HR 부서에서 신규 입사자를 위한 3개월간의 작업리스트를 작성케 합니다. 그 에 따라 업무분장을 하고 한번에 점검하는 것이 아니라 중간중간 팀원들과 공유하는 시간을 가집니다. 이슈를 해결하기 위해 거쳤던 과정, 새롭게 알게 된 사실 등을 나누게 됩니다. 이런것들이 쌓이고 잘 공유되게 되면 팀원들 사이의 시너지 효과와 업무 집중도가 높아질 것 같아 매우 좋은 제도라 생각했습니다. 또한 신규 입사자의 업무 방향이 틀어지지 않게 잘 잡아주는 역할도 하게 됩니다.

팀 리드 1:1 미팅

업무를 하다보면 이렇게 하는게 맞는 방향인가? 내가 이 팀에서 앞으로 어떤 일들을 맡아서 하게 될까? 하는 궁금증이 생기게 마련입니다. 멘토링과 중간점검이 주로 업무를 하고 리더분들 의견을 듣는 시간이었다면, 1:1미팅에서는 제가 마이쿤에서 하고자 하는 업무 지향점을 알리고 그 피드백을 받는 시간이 됩니다.

Monthly Review

매월 말일에 진행되는 전사 회의입니다. 한달 동안 각 팀에서 해 낸 사항과 앞으로 이뤄낼 성과를 공유하게 되는데요. 그 끝에는 항상 CEO 메시지 전달시간이 있습니다. C레벨의 생각과 내가 속해있는 마이쿤이라는 회사가 앞으로 나아갈 방향과 현재 상태를 알 수 있는 가장 중요한 시간 중 하나입니다.

위 4가지 항목의 가장 큰 공통점은 바로 회사가 나에게 어떠한 것을 요구하고 어떤 방향으로 업무를 진행할지 피드백을 준다는 겁니다. 그 피드백을 통해 내가 회사에 속해 있다는 소속감과 안정감을 얻게 되었습니다.

업무

인프라 구성

매우 간소화한 서버 구성도…
  1. AWS 클라우드

스푼 라디오는 모든 서비스 환경을 아마존 클라우드 환경위에서 운영하고 있습니다. 때문에 서버를 관리하는 능력 뿐 아니라 AWS에서 제공하는 서비스들을 잘 파악하고 그 용도에 맞게 구성하는 능력이 중요합니다.

2. IaC

아마존콘솔에서 서비스에 필요한 인프라스트럭쳐를 생성하는 방법은 간단하기도 하고 복잡 할 때도 있는 절차입니다. 문제는 그 과정을 계속해서 거치며 개발, 스테이징, 실서비스 환경을 만들어야 한다는 것입니다.

인프라 팀은 이미 그 과정에서 여러 시행착오를 겪었고, terraform과 써드파티인 terragrunt를 사용하고 있었습니다.

실제로 마이쿤 입사 과제로 terraform을 이용한 인프라 환경 구축이 있었습니다. 간단한 인프라를 구축하는데도 코드 반복과 중복 작업이 일어남을 알았고 그 불편함을 해소하기 위해 module, terragrunt 등을 사용하는 법을 배우고 알게 되었습니다.

관련하여 간단한 예시를 첨부합니다.

  • 리소스 정의, 리소스를 반복적으로 사용하는 모듈을 각각 생성해서 사용
cf 리소스
cf 리소스를 사용하는 모듈

위 모듈에서 키의 밸류만 바꿔주면 계속해서 다른 값을 가지는 리소스를 생성 할 수 있게 됩니다.

3. 오픈 소스

클라우드 서버상에서 저희 스푼 라디오 서비스를 지원하기 위한 인프라를 구축하기 위해 앞서 언급한 terraform 및 여러가지 오픈 소스 솔루션을 도입하고 있습니다.

  • Jenkins
    Jenkins 아이템을 구성 하는 것 역시 UI를 이용하는 것이 아닌 Jenkinsfile을 이용
    Jenkinsfile을 이용하면 UI에서 만드는 것에 비해 버전기록을 남길 수 있다는 장점이 있습니다.
    또한 jenkins 콘솔 ouput log가 상당히 보기 불편한데 blueocean이라는 툴을 이용해 가시성을 높였습니다.
보기 어려웠던 콘솔 로그
도식화되어 한눈에 들어오는 블루오션, 물론 로그도 아래쪽에 같이 표시된다.
  • Ansilbe 과 AWX
    AWX는 ansible UI 버전으로 레드햇에서 제공하는 유료 솔루션인 ansible tower의 오픈 소스 버전 입니다.
    AWX에 ansible playbook 및 template 등을 등록해야 하는데 이 것은 python코드를 짜서 작업 하였습니다.
    이 과정에서 필요하다면 오픈 소스를 수정하여 저희 환경에 맞게 업무를 진행합니다.
    일례로, 스푼 라디오의 MENA지역 사용자 latency를 줄이기 위해 새롭게 AWS Bahrain 리전에 작업을 하는 일이 있었는데, 파이썬에서 사용중인 boto라이브러리가 해당 리전을 지원하지 않는 문제가 있었고 해당 소스 코드의 json파일을 수정하여 사용하는 신기한 경험을 하였습니다.
문제의 json 파일과 추가된 바레인 지역
  • Docker와 docker-compose
    상기한 오픈 소스 환경을 서버상에 직접 설치 및 가동 할 수 있지만, 구성의 일관성과 재배포 시의 편리함을 위하여, aws instance 위에 docker를 사용합니다. Docker를 사용하면 이미 구성된 이미지를 가지고 어느 곳에서든지 재활용이 가능하기 때문에 작업자가 로컬에도 동일한 작업환경을 구축 할 수 있다는 장점이 있습니다.
  • Vault
    인프라를 구성하고 그 위에서 돌아가는 서비스들의 config를 조절 할 때, 일일히 변수값을 입력하는 대신 vault라는 변수 관리 시스템을 이용 합니다.
    이 경우, 비밀 토큰 값 등 민감한 정보를 안전하게 보관하고 필요할 경우에만 그 값을 꺼내 쓸 수 있기 때문에 보안과 관리측면에서 굉장히 편리합니다.

정리하자면

  • AWS 콘솔에서 작업 할 사항을 terraform을 써서 코드화 하였고
  • 클라우드 서버 위에 인프라를 구성하기 위한 여러 가지 수정된 오픈 소스 배포

를 통해 우리 스푼 라디오를 서비스 할 수 있는 인프라가 만들어지게 됩니다. 물론 이 외에도 여러가지 추가 구성사항들(모니터링, DB, Lambda 등…)이 있어야 온전한 구성이라고 볼 수 있지만 차후에 기회가 된다면 서술해 보겠습니다.

업무적으로 코딩 뿐 아니라 장벽에 부딪힐 때 직접 원인을 찾고 새로운 해결책을 만드는 신선한 경험을 할 수 있었습니다. 오픈소스를 수정하는 것은 고수 개발자들의 전유물로 여겼던 제가 다른 이의 코드를 디버깅하고 해결책을 찾도록 자극을 받게 해준 인프라 팀에게 감사함을 전달합니다.

마치며

마이쿤에서 데브옵스 엔지니어로 근무하며 얻은 가장 큰 장점은 낯선 것에 대한 진입장벽 완화입니다. 신규입사자의 업무 배경을 고려한 마일스톤 설정, 단계별로 진행되는 인프라 구축 및 서비스 배포를 통해 스푼 라디오 서비스를 더 잘 알 수 있었고, 보람있게 업무를 진행 할 수 있었습니다. 함께 일하는 팀원들 및 여러 개발자분들, 운영자 분들의 배려와 관심에 깊은 감사를 드립니다.

--

--