고객의 니즈, 성능, 사용성을 모두 만족하는 서비스를 만들어요!
(신속하고 정확하게!)
모빌리티42 개발팀은 어떤 일을 하나요?
요구사항 분석, 기능목록 도출, UI 퍼블리싱, 테스트 작성, 코드 작성, 디버깅, QA, 배포, 운영까지. 모빌리티42에서 운영하는 모든 서비스의 개발 사이클을 개발팀이 담당해요. 모빌리티42의 모든 개발자는 풀스택 엔지니어를 지향하고 있어요.
요구사항 분석과 기능목록 도출
기획팀에서 만든 기획서를 검토하며, 고객의 요구사항에 맞춰 기능목록을 도출해요. 이 과정에서 API 설계, 데이터베이스 설계 등의 작업도 함께 진행하기도 하죠. 최종적으로는 ERD, 기능목록, 테스트 명세, 진리표, 웹 API 명세 등을 작성하게 돼요.
퍼블리싱, 프론트엔드 앱(뷰, 뷰 모델, 서버 요청) 구현
피그마(Figma)를 통해 공유된 UI를 우선 퍼블리싱해요. 그런 다음, 코틀린 멀티플랫폼(JS)과 모빌리티42 자체 멀티플랫폼 앱 라이브러리를 사용해 MVVM 형태로 프론트엔드 앱의 UI와 뷰모델을 구현해요. 백엔드 서버와 통신도 자체 라이브러리를 사용해 구현하고 있어요. 코틀린 멀티플랫폼(JS) 기반의 Mock API를 사용해 프론트엔드 초기 구현을 진행해요.
테스트, 디버깅, QA, GPT 활용
앞서 작성한 기능목록과 진리표 등을 바탕으로, 테스트 케이스(TC)를 작성해요. 그리고 테스트를 통해 발견된 문제를 디버깅해요. 그렇게 개발된 서비스는 GPT를 통해서 학습시켜요. 서비스의 도메인을 학습시키고, 각 기능별 API의 정보를 학습시켜요. 기획팀과 개발팀의 소통 창구이자, 도메인끼리 API를 호출해야하는 경우 개발팀 내부의 소통 창구로 사용합니다. 그 외에도 회사의 개발 라이브러리를 학습시켜서 코파일럿을 이용해 개발을 더욱 쉽고 효율적으로 진행하고 있어요.
백엔드 개발
모빌리티42 자체 코틀린 멀티플랫폼(JVM) 앱 라이브러리와 스프링(Spring)을 활용해 프론트엔드와 통신하는 백엔드를 개발해요.
배포, 운영, SE
GitLab CI와 코드화된 인프라를 바탕으로 한 웹 기반의 배포 시스템을 구축했어요. AWS를 사용하여 서비스를 운영해요. 신규개발과 개발한 서비스의 운영을 맡고 있어요. 신규개발팀은 셀 단위로 프로젝트를 나누어서 맡은 서비스를 점진적으로 만들어나가고, 운영팀은 실제 서비스를 운영하면서 고객의 요구사항을 처리하는 동시에 에러 보고, 자체 QA 등의 피드백을 반영해 서비스의 완성도를 높여나가게 돼요.
기술 스택이 궁금해요!
•
코틀린 멀티플랫폼
iOS를 제외한 모든 영역에서 코틀린 멀티플랫폼을 사용해요. 항상 최신 버전의 코틀린을 적용하고 있고, 코루틴(Coroutine)을 활용한 동시성과 프로퍼티 위임, 다형성, 제네릭스, 인라인을 최대한 활용하는 멀티플랫폼 기반 라이브러리를 CEO/CTO와 함께 개발해요. (CEO도 틈틈이 코딩하고 있어요!) 그렇게 개발된 모빌리티42 자체 라이브러리를 활용하여, 프론트엔드-백엔드-모바일 앱 사이의 매끄러운 통합을 지향해요.
•
프론트엔드
프론트엔드는 코틀린 멀티플랫폼(JS) SPA로 구현하고, 아마존 S3를 통해 배포하고 있어요.
•
백엔드
백엔드는 스프링 MVC(WebFlux 기반)로 개발해서 AWS Elastic Container Registry(ECR)로 이미지를 관리하고 Elastic Compute Cloud(EC2)에 배포하고 있어요.
•
데이터베이스
MySQL과 PostgreSQL, JDBC를 사용하고 있고, 일부 영역에서는 Redis와 MongoDB를 사용하기도 해요.
•
기타
소스코드는 GitLab을 통해 관리하고, GitLab CI/CD 파이프라인을 사용하여 배포 과정을 자동화합니다. 또한, Infrastructure as Code(IaC) 도구인 Terraform을 도입하여 리소스를 더욱 효율적으로 관리하고 있어요.
어떤 역량을 필요로 하나요?
•
프로그래밍에 대한 흥미
가장 중요한 건 개발을 좋아하는지! 본인이 만든 코드가 실제로 돌아가는 걸 보면서 기뻐할 수 있는 사람이어야 해요.
•
커뮤니케이션 능력
개발팀은 개발이나 업무 관련 내용에 대해 서로 의사소통할 일이 많아요. 원활한 커뮤니케이션 능력이 필요해요.
•
새로운 기술에 대한 학습 의지
새로운 도메인 지식이나 개발 지식을 습득하고, 자신의 업무에 적용하면서 발전해나가려는 의지가 있으면 좋겠어요.
•
열린 마음
당장은 코틀린이나 서버/프론트엔드 기술, 도메인 지식 등이 부족하더라도, 분야를 가리지 않고 매일 업무에 필요한 지식을 습득하고 팀에 필요한 것을 구현해내려는 자세를 갖고 있어야 해요.
•
프로페셔널리즘
스스로 엄격한 기준 하에 자신이 구현해야 하는 부분의 명세와 기능목록을 잘 이해하고, 엣지 케이스(Edge Case)를 포함하는 모든 경우의 수를 커버하는 테스트케이스를 작성하면서, 가독성이 높고 명확한 코드를 작성하기 위해 노력하는 자세가 필요해요.
그 외에도 개발팀에 궁금한 점이 있다면, 아래 링크를 확인해 보세요!
(모빌리티42 CEO가 직접 운영하는 온/오프라인 프로그래밍 스터디입니다 )
모빌리티42에 합류하고 싶다면,
아래 링크를 통해 지원해 주세요!