아마존 출근기 #2 – 개발 프로세스

logo_amazon

근무 환경과 관련된 이야기는 아마존 출근기 #1 – 근무 환경을 보시기 바랍니다.

면수습 기념 아마존 출근기 2편입니다. 이번 편은 개발 프로세스와 관련한 이야기입니다. 참고로, 저는 아마존 런던 오피스의  Amazon Video iOS Client 팀에서 소프트웨어 개발자로 일하고 있습니다.

1.

저희 팀은 스크럼을 적용하고 있습니다. 매일 오전 약 15분 간 스탠드업 미팅을 진행합니다. 말 그대로 서서 하는 회의입니다. 주로 어제 한 일과 오늘 할 일을 공유합니다. 대부분의 업무 내용은 이슈 트래커를 통해 공유됩니다. 또 다른 회의로는 스프린트 계획 회의가 있습니다. 이슈 트래커에 등록된 이슈 중 이번 스프린트에 포함할 것들을 정리하고, 우선 순위를 조정합니다. 참고로, 스프린트는 배포 주기라고 생각하시면 됩니다.

2.

아마존의 대부분 개발 조직은 코드 리뷰를 필수로 거치게 되어 있습니다. 저희 팀의 경우 최소 두 명 이상이 코드 변경에 동의해야 코드를 내보낼 수 있습니다. 당연한 이야기지만, 내 코드가 잘 리뷰되기 위해서는 나 역시도 동료들의 코드를 잘 리뷰해 줘야 합니다. 개인적으로 코드 리뷰는 반드시 필요한 프로세스라고 생각합니다. 코드가 잘 리뷰되기 위해서는 요구사항이 명확하게 문서화 되어 있어야 하고, 작성된 코드의 아키텍쳐 및 디자인 등도 잘 문서화 되어 있어야 합니다. 개발자들은 보다 나은 코드 리뷰를 위해 좀 더 주의해서 코드를 작성하게 되고, 본인이 작성하지 않은 코드라 하더라도 대략적으로는 구성을 알 수 있게 되는 등 긍정적인 부수 효과도 생겨나게 됩니다.

코드 리뷰의 가장 좋은 점은 코드 퀄리티 및 팀원의 실력 향상이라고 할 수 있습니다. 개발자는 다른 개발자의 코드를 보는 게 가장 좋은 공부라고 생각하는데, 이를 위해서는 코드 리뷰가 가장 좋은 방법인 것 같습니다.

3.

아마존은 위키를 통해 대부분의 문서화를 진행합니다. 요구사항, 시스템 아키텍쳐, 유지 보수 가이드 등 많은 것들이 위키로 문서화되어 있고, 잘 구조화 되어 있습니다. 팀에 합류한 첫 날, 저는 뉴비들이 해야 할 일들이 적힌 위키 페이지 URL을 전달 받아 혼자서 개발 환경 및 각종 사내 시스템을 셋팅할 수 있었습니다. 문서에 부정확한 정보가 포함되어 있거나, 업데이트가 필요할 경우 직접 편집할 수도 있고, 문서 작성자 혹은 관련자에게 알림을 보낼 수도 있게 되어 있어 문서가 항상 최신 상태로 유지될 수 있도록 노력합니다.

4.

빌드 및 유닛 테스트는 CI 서버를 통해 자동으로 실행됩니다. 테스트가 실패할 경우 알림이 오도록 되어 있어 유닛 테스트 역시 최신 상태를 유지합니다. 유닛 테스트 외에도 실제 앱의 UI 를 통한 테스트 역시 많은 부분 자동화 되어 있습니다. 팀에 개발자 외에 별도의 테스트 엔지니어들이 있어 UI 테스트 자동화를 담당하고 있습니다. 이런 자동화된 테스트로 커버되지 못하는 부분은 QA엔지니어들이 담당합니다. UI 테스트의 경우 배포 시스템과 연동되어 있어 UI 테스트를 통과해야 앱을 애플에 검수 요청하게 됩니다.

5.

배포된 앱은 다양한 방법을 통해 모니터링됩니다. 대부분의 수치들은 갑작스런 변화를 보일 경우 자동으로 알림이 오도록 설정되어 있습니다. 각 팀은 당직과 비슷한 On call이 지정되어 있는데, 장애 발생의 1차적인 대응 및 처리를 담당합니다. 장애가 발생했을 경우 On call에게 자동으로 연락이 가고, On call은 최대한 빠른 시간 안에 장애 내용 및 원인을 파악해 문제를 해결해야 합니다. On call은 각 개발자가 돌아가며 담당하는데, 저는 아직 뉴비이기 때문에 로테이션에는 들어가 있지 않습니다.

 

이상으로 3개월 동안 보고 느낀 점을 마칩니다.

Advertisements

5 thoughts on “아마존 출근기 #2 – 개발 프로세스

  1. Pingback: 아마존 출근기 #1 – 근무 환경 | Skeuomorphic Bit

  2. 출근 시간이 비교적 자유로운 편이라고 하셨는데 어떻게 모두 오전에 모여 스크럼을 하실 수 있는지 궁금하네요.

    • 가급적이면 스탠드업 전에는 출근하는 편이구요, 그렇지 않으면 본인이 공유할 내용은 메일로 전달합니다. 꼭 모두가 참여하는 걸 강제하지는 않습니다.

  3. 안녕하세요 통신회사에서 서버/네트워크 운용관리를 7년째하고있는 직장인입니다.
    대학때는 컴퓨터공학을 전공해서 프로그래밍대회도 나가고 프로그래밍제작 아르바이트도 하면서 나름 개발자의 꿈을 갖고있었는데, 어쩌다 대기업에 취직하다보니 안정적인 생활에 익숙해져서 현실에 안주하게 되었네요.
    일 자체에서 느끼는 보람을 찾기위해서 구글링을 하다보니 여기까지 흘러오게 되었습니다. 아마존 취업 후기와 출근기를 참 재미있게 읽었습니다. ^^. 영국에서의 근무 이야기를 보니 참 부럽네요. 자유스럽게 코딩하고 잘 구조화된 프로세스에서 서로를 리뷰하는 문화가 멋진것 같습니다.
    혹시 아마존에 취직하게 된 가장 큰 경력이 무엇인지 알 수 있을까요? 저의 경우 코딩경력은 대학때 배운 C++/JAVA정도이고 회사에서는 여러 종류의 서버와 네트워크장비들을 운용하고 긴급복구하는 정도의 업무경력이 다 입니다. 개인적으로 알고리즘과 코딩공부를 따로 열심히 해서 지원이 가능한지, 아니면 특정 경력이 필수적으로 있어야하는 궁금합니다.
    감사합니다.

    • 필수 조건 & 선호 조건은 포지션마다 다릅니다. 이런 내용은 회사마다 채용 공고에서 확인할 수 있습니다. 대부분 공통적으로 컴공 전공 & 유관 분야 경력을 필수 조건으로 요구하더군요. 개발 직군의 경우는 대부분 코딩 시험을 거칩니다. 코딩 시험은 문제 해결 능력 및 사고 과정에 초점을 두는 경우가 많습니다.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s