Shakr는 모든 광고주가 새로운 디지털 마케팅 환경에서 성공할 수 있도록 도와주는 비디오 기술 제품을 제작합니다. Fortune 500 선정 기업을 포함한 2,000곳 이상의 비즈니스에서 성장을 위해 Shakr를 이용하여 수십만개 이상의 동영상 광고를 만들고 있습니다.
실제 개발에 들어가기 앞서 아이디어를 구체화하고 검증하는 과정을 진행합니다. 와이어프레임을 그려보고, 아이디어가 영향을 줄 고객군을 고려하여 어떤 방향으로 구현이 되어야 할 지 결정합니다.
대략적인 방향이 결정되면, 고객성공팀(Customer Success)과 같이 아이디어에 밀접한 관련이 있는 팀과의 대화를 통해 고객의 입장에서 아이디어가 어떻게 받아들여질지, 어떤 효과를 달성할 수 있을지 확인합니다. 뉴욕 오피스 및 전 세계에서 리모트 근무를 하는 팀원들과 대화할 때에도 Slack과 Zoom 같은 온라인 커뮤니케이션 도구를 활용해 효율적으로 협업합니다. 논의가 충분히 이루어진 이후 Notion, Linear, Asana 같은 도구로 역할과 책임을 정리하고 다음 단계를 결정합니다.
아이디어가 충분히 구체화되면 본격적인 개발에 들어갑니다. 모든 코드 작업은 GitHub의 Pull Request로 이루어지는데, GitHub Actions가 각 프로젝트마다 지정해둔 단위 테스트와 린터를 실행하여 오류를 사전에 예방합니다. 예를 들면, 백엔드 프로젝트에서는 Rubocop이 코딩 스타일을 검사하고, RSpec이 단위 테스트를 구동하고, Code Climate이 변경점 및 전체 코드 커버리지를 계산하여 보여줍니다.
개발 도중에 피드백이 필요하다고 생각되거나 머지 준비가 되었을 때 코드 리뷰 요청을 합니다. PR마다 최소 1명이 코드 리뷰를 하는데, 코딩 스타일부터 변수 이름 변경 권유, 리팩토링 제안까지 다양한 조언을 합니다.
리뷰가 끝나면 PR이 머지되고, 다음 릴리즈 사이클에 배포를 진행합니다. 내부 및 외부 도구를 이용하여 배포는 개발자가 직접 진행할 수 있는 환경이 마련되어 있어, 필요할 때 바로 배포를 진행할 수 있습니다.
사용자의 작업 흐름에 중요한 영향을 미치는 배포를 할 때는, 점진적 출시(Phased rollout)을 사용하여 부정적 영향을 최소화합니다. 자세한 데이터 분석이 필요한 경우 고객성공팀과 함께 데이터를 분석하고 다음 단계를 결정합니다.
Shakr에서는 규칙에 구애받지 않고, 자율성에 기반한 업무 환경을 만들기 위해 다양한 지원을 하고 있습니다.
Shakr의 백엔드는 대부분 Ruby 및 Rails 프레임워크를 사용하는 서비스로 구성되어 있습니다. 사용자 관리, 정기권 처리, 영상 제작부터 비디오 템플릿 관리까지 다양한 역할을 담당하고 있으며, 백엔드 엔지니어로서 다음과 같은 업무를 맡게 됩니다.