역할과 책임
협업에 필요한 역할과 책임을 소개합니다
클라우드개발
이런 일을 해요
g클라우드는 On-demand 형태의 인프라 리소스를 제공하는 서비스입니다. 물리적인 인프라를 사람이 직접 구축하고 관리해야 했던 과거 서버 컴퓨팅 환경과 달리, 클라우드는 서버/네트워크/스토리지와 같은 물리적인 인프라를 소프트웨어 기반의 논리적인 인프라 형태로 제공합니다. 인프라 이용자가 물리적인 인프라를 직접 관리할 필요가 없어야 하므로 이러한 과정은 반드시 자동화되어야 하며, 요청된 시점에 탄력적으로 제공되어야 합니다.
클라우드개발 직무는, 이러한 소프트웨어 기반의 가상화 시스템을 관리하고, 웹 서비스 수준의 추상성을 제공합니다. 주요 업무는 아래와 같습니다.
- 가상화 원천기술에 대한 개념 검증 및 연동 시스템 개발
- API 서비스 설계, 구현, 유지 보수
- 데이터 처리 및 관리
- 분산 시스템 기반의 솔루션 개발
서버 사이드의 데이터베이스를 관리하고 요청된 데이터의 처리를 위한 API 서비스를 개발하는 등 클라우드개발 직무를 통해 백엔드 분야를 전반적으로 경험할 수 있습니다. 또한, 가비아는 비교적 낮은 단계에서부터 클라우드를 위한 서비스 솔루션을 자체적으로 개발하고 있기에 서비스 도메인을 깊이 이해할 수 있어 개발자에게 큰 도움이 될 수 있습니다. 가상화 시스템에 대한 이해뿐만 아니라, 스토리지 및 네트워크 시스템에 대한 경험과 지식도 두루 쌓을 수 있습니다.
인프라 서비스는 장애 상황이 발생할 경우 고객에게 직접적인 손해를 끼치는 만큼 시스템 오류에 매우 민감합니다. 견고함이 생명인 만큼, 장애 상황에 대한 예방 및 대응 전략이 항상 준비되어야 한다는 부담도 있는 직무입니다.
이런 사람을 원해요
첫째, 스스로 일할 수 있는 사람이 필요합니다. 명확한 업무 지시를 바라며 이를 따르기만 하는 사람보다는, 스스로 일을 찾아서 할 수 있는 사람을 선호합니다. 비즈니스 환경에서 요구하는 기능, 시스템 안정성과 유무형 관리 비용을 줄이기 위한 고민을 주체적으로 할 줄 알아야 합니다. 이는 가비아가 자체적인 솔루션을 개발하고 있기에 업무 난이도가 비교적 높고 참고할 수 있는 레퍼런스가 많지 않다는 측면에서 더욱더 강조되는 역량입니다.
둘째, 원활한 의사소통 능력이 필요합니다. 시스템이 클수록 혼자 작업하는 경우는 거의 없고, 팀 단위로 개발을 진행합니다. 개발 업무가 원활하게 이루어지기 위해서는 의사소통 능력이 필수입니다. 의사소통은 반드시 구두로 대화하는 것만을 의미하지는 않습니다. 이슈 트래킹 툴, 코드 리뷰 툴 등을 활용해 원격으로 문서나 글로 의견을 나누기도 하므로, 본인의 의견을 글로도 정리할 수 있어야 합니다. 또한, 다른 사람이 더 나은 방안을 제시하는 경우 자신의 주장을 내려놓고 해당 의견을 받아들일 줄도 알아야 합니다. 그리고 개발자가 아닌 다른 직무의 사람과도 협업과 의사소통에도 문제가 없어야 합니다.
셋째, 스스로 판단할 수 있고, 판단의 근거를 설명할 수 있어야 합니다. 소프트웨어 개발은 한 가지 일을 하는 데도 여러 가지 방안이 있을 수 있습니다. 코딩을 시작하기 전에 스스로 해당 문제에 대한 가장 적절한 방안을 판단 및 선택할 수 있어야 하고, 수립한 방안의 판단 기준을 다른 사람(비개발자일 수도 있음)에게 설명할 수 있어야 합니다. 코딩하는 과정에서도 판단과 선택을 할 수 있어야 하고, 이 부분을 코드 리뷰 시 설명할 수 있어야 합니다.
이렇게 일해요
일상적인 하루의 일과를 설명하자면, 「이슈 현황 확인 → 당일 업무 계획 공유 (일일 업무) → 이슈 현황 업데이트 → 코드 리뷰 → 프로젝트 개발 → 퇴근 전 당일 업무 현황 업데이트」와 같습니다.
클라우드개발 업무는 주로 Gitlab을 이용하여 관리됩니다. 프로젝트 단위로 구성되는 서비스를 Gitlab Milestone으로 수립하고 하위에 Gitlab Issue들을 등록하여 진행합니다. 개발 프로젝트에 대한 문서화는 주로 Markdown 파일로 관리하고 있습니다. 개발에 한정되지 않는 공통적인 내용은 Gitlab Wiki 혹은 Confluence를 통해 문서화되고 있습니다.
이러한 업무들의 성과는 개발 산출물의 완성도와 작업 일정을 기준으로 설정된 KPI를 통해 측정됩니다. 산출물의 품질 평가는 '생산성 관점', '품질이나 완성도 관점', '의사소통의 관점' 등 다양한 항목에 따라 측정되고 평가됩니다.
이렇게 될 거예요, 이렇게 커나가요
클라우드개발 직무에서는 웹 서비스, 인프라 시스템, DevOps 등 다양한 형태의 요구 사항이 있을 수 있어 서버 사이드에 필요한 여러 가지 직무를 수행하는 개발자로 성장할 수 있습니다.
가비아는 자유와 책임을 중시하는 조직인 만큼, 개발자가 원하는 방향으로 챌린지하며 관련된 역량을 쌓을 수 있습니다. 또한, 시장에 클라우드 개발자와 엔지니어가 부족한 상황이므로, 직무 수행을 통해 잘 성장한다면 경쟁력 있는 인재가 될 수 있습니다.
서버, 네트워크 등의 인프라에 대한 지식과 개발 지식을 동시에 지니고 있는 개발자는 시장에서 매우 찾기 힘듭니다. 따라서, 이러한 양쪽의 기술을 적절히 습득한다면 개발자로서 경쟁력을 갖게 될 것입니다.
이 일을 하고 싶다면, 기억해주세요
우선 소프트웨어 개발을 위해선 탄탄한 기본기가 중요하므로, 관련 지식과 역량을 지속해서 축적해 나가기를 바랍니다. 그리고 개인 프로젝트나 실무 경험에서 단순히 요구 사항을 해결하는 데 그치지 않고, 대규모 시스템으로 확장했을 때 발생할 수 있는 여러 가지 문제 상황들을 선제적으로 고려해 안정성 있는 설계 구축안을 고민하고 개인의 개발 결과물에도 적용하려 노력하시기를 추천합니다.
또, 이러한 노력이 단순히 경험에 그치지 않고 정리된 형태로 기록(Github 등) 하는 것이 중요합니다. 추가로 홈 네트워크를 스스로 구축해 보거나, Openstack 등의 가상화 툴을 이용해서 환경을 구축해 보는 등의 인프라 기술에 대한 학습도 병행하면 좋습니다.
인프라 서비스는 안정성이 무엇보다 중요하므로, 스스로 작성한 코드를 항상 테스트 코드로 검증하려는 노력과 습관을 지닐 것을 추천합니다. 유닛 테스트 잊지 마세요.