배달의민족 Flutter 도입과 아키텍처 설계 교훈

배달의민족은 주문접수 채널에서 Flutter를 도입하여 멀티 플랫폼 대응력을 높이고, Clean Architecture를 통해 효율적인 코드 관리를 실현했습니다. 이 글에서는 Flutter 도입과 아키텍처 설계의 과정에서 얻은 교훈을 바탕으로, 변화하는 비즈니스 요구에 맞추기 위한 혁신적인 접근을 소개합니다. 또한, 이러한 경험이 다른 기업이나 개발자에게도 유용한 전략이 될 수 있도록 공유하고자 합니다. Flutter 도입으로 인한 혁신적인 변화 배달의민족은 Flutter 도입을 통해 플랫폼 전환과 유지보수 측면에서 큰 혁신을 이루었습니다. 기존의 Windows, Android, iOS 플랫폼에 추가하여 macOS와 다양한 Android 디바이스로까지 확장할 필요성을 느꼈습니다. Flutter의 도움으로 단일 코드베이스에 의해 멀티 플랫폼을 동시에 지원할 수 있게 되었고, 이를 통해 개발자 수를 줄이고 생산성을 향상시킬 수 있었습니다. 개발자들은 각 플랫폼에 대해 반복적으로 구현할 필요가 없어졌고, 버그 수정이나 기능 변경 시에도 이전에 비해 적은 시간에 모든 플랫폼에 적용할 수 있게 되었습니다. Flutter의 도입은 크로스 플랫폼 반응형 UI 구현을 가능하게 하여, 사용자 경험의 일관성을 높였습니다. 이제 파트너들은 다양한 OS 환경에서 동일한 경험을 하게 되므로, 학습 비용도 줄어들고, 혼란이 줄어드는 장점을 경험하고 있습니다. 이러한 변화는 단순히 기술적인 접근방식이 아닌, 사업의 방향성을 전환하는 계기로 작용했습니다. 파트너사들이 원하는 효율적인 주문 관리 시스템을 제공하기 위해, 기존의 네이티브 아키텍처에서 벗어나 새로운 기술 스택으로 과감히 옮겨갔습니다. Firebase와 같은 클라우드 서비스를 활용하여 실시간 데이터 업데이트와 동기화가 가능하게 되었고, Flutter의 강점을 극대화하여 사용자 친화적인 UI/UX도 구현됐습니다. 이로 인해 즉각적인 피드백을 수렴할 수 있는 구조가 마련됐습니다. 결국 Flutter의 도입은 배달의...

AI 테스트 자동화 플러그인 개발과 성과

AI와 함께하는 테스트 자동화는 최근 소프트웨어 개발의 혁신적인 방법론으로 부상하고 있으며, 특히 IntelliJ 기반의 플러그인 개발을 통해 획기적인 성과를 이루었습니다. 작업 시간 단축과 코드 품질 향상은 물론, 팀의 협업을 강화해 개발자가 한층 쾌적한 환경에서 작업할 수 있도록 합니다. 이러한 자동화의 가능성을 탐구하고, 실제로 적용된 사례를 통해 어떤 성과를 이끌어냈는지 알아보겠습니다.

AI 기반 테스트 자동화의 필요성

저희 팀에서는 여러 레포지토리에서 필수적인 테스트코드는 수행하고 있으나, 엣지케이스와 예외 상황을 다루는 데에는 자원이 부족했습니다. 이로 인해 발생한 커버리지 문제는 운영의 안정성에 직접적인 영향을 미쳤습니다. 어려운 테스트 케이스를 작성해야 하지만 압박감 속에서 그에 따른 중요한 테스트 코드 작성이 지연되고 말았습니다. 이러한 문제를 해결하기 위해 AI 테스트 자동화 플러그인을 개발하게 된 것은 팀 전체의 업무 부담을 덜고, 코드 품질을 높이기 위한 필수적인 접근이었습니다. 플러그인을 통해 컴파일 보장 템플릿을 생성하여 Amazon Q와 연계할 수 있었고, 이를 통해 단 30분 만에 100개의 테스트를 자동으로 생성하는 성과를 거두었습니다.


AI와의 협업, 플러그인 개발 과정

플러그인 개발의 첫 번째 목표는 팀 내에서 사용하고 있는 다양한 테스트 패턴을 자동으로 학습하는 것이었습니다. 이를 통해 기존의 수작업으로 작성해야 했던 반복 작업을 통해 팀의 시간을 절약하는 동시에, 기존 테스트의 손실 없이 새로운 테스트를 추가할 수 있도록 했습니다. 초기 버전에서는 AI가 코드 생성의 대부분을 담당하는 방식으로 시작했으나, 코드의 정확성 및 컴파일의 안정성을 보장하는 데에는 한계가 있었습니다. 항목별 테스트 생성을 위한 다양한 경우의 수를 고려하고, class와 method의 종속성을 정확하게 반영하기 위한 구조적 분석이 필요했습니다. 이러한 점에서 플러그인은 AI가 필요로 하는 템플릿을 보장하고, 코드의 정확성 및 동작 가능성을 판별하는 중요한 역할을 하게 되었습니다. 이상의 과정을 토대로 AI가 과정에서 놓친 부분을 메울 수 있도록 하여, 완료된 테스트 코드의 품질을 높이고자 했습니다.


성과와 개선 방안

최종 결과물은 100개 클래스를 대상으로 하는 테스팅 절차를 크게 단축시켰습니다. 기존에는 하나의 클래스당 작성에 평균 10분이 소요되었다면, 플러그인과 Amazon Q의 연계를 통해 3분으로 대폭 줄일 수 있었습니다. 컴파일 성공률 또한 85%에서 95%로 증가했으며, 생성된 테스트 코드의 메서드 커버리지 또한 67%에서 95%로 향상되었습니다. 이러한 성과는 팀의 전체 생산성 향상으로 이어졌으며, 특히 신규 팀원에게도 간편하게 테스트 코드 작성을 안내할 수 있는 근거가 되었습니다. 다만, 여전히 해결해야 할 문제들이 존재했습니다. 예를 들어, 테스팅을 위한 대량의 생성된 테스크 리스트에서 단위 테스트로 가능한 케이스를 자동으로 선별하는 작업이 필요합니다. 이와 같은 후속 작업은 향후 일정 기간 내에 지속적인 업데이트를 통해 수행할 계획입니다.


AI와 함께하는 테스트 자동화는 완전한 대체가 아닌, 효율적인 보조 역할을 수행하는 것으로 여겨집니다. 최종적으로 획득한 주요 성과와 팀 효율성 향상은 물론, 계속해서 발생할 수 있는 문제들을 해결하기 위한 지속적인 개선 노력은 앞으로도 계속될 것입니다. 첫 단계로는 팀 내 피드백을 반영하여 다음에 적용할 설정 변경을 고려하고, 각 레포지토리의 특성에 맞춘 템플릿 구축 작업을 계획하고 있습니다. 이는 명확한 가치와 유용성을 더욱 강조하기 위함이며, 향후 3개월 이내에 추가적인 개선 사항을 도입할 예정입니다.

이 블로그의 인기 게시물

우아한형제들의 실시간 알림 혁신: SSE(Server-Sent Events)로 이룬 효율성과 안정성

우아한 디버깅 툴 개선으로 QA 업무 효율화

물어보새의 진화와 지식 공유 확장