배달의민족 Flutter 도입과 아키텍처 설계 교훈
배달의민족은 주문접수 채널에서 Flutter를 도입하여 멀티 플랫폼 대응력을 높이고, Clean Architecture를 통해 효율적인 코드 관리를 실현했습니다. 이 글에서는 Flutter 도입과 아키텍처 설계의 과정에서 얻은 교훈을 바탕으로, 변화하는 비즈니스 요구에 맞추기 위한 혁신적인 접근을 소개합니다. 또한, 이러한 경험이 다른 기업이나 개발자에게도 유용한 전략이 될 수 있도록 공유하고자 합니다.
Flutter 도입으로 인한 혁신적인 변화
배달의민족은 Flutter 도입을 통해 플랫폼 전환과 유지보수 측면에서 큰 혁신을 이루었습니다. 기존의 Windows, Android, iOS 플랫폼에 추가하여 macOS와 다양한 Android 디바이스로까지 확장할 필요성을 느꼈습니다. Flutter의 도움으로 단일 코드베이스에 의해 멀티 플랫폼을 동시에 지원할 수 있게 되었고, 이를 통해 개발자 수를 줄이고 생산성을 향상시킬 수 있었습니다. 개발자들은 각 플랫폼에 대해 반복적으로 구현할 필요가 없어졌고, 버그 수정이나 기능 변경 시에도 이전에 비해 적은 시간에 모든 플랫폼에 적용할 수 있게 되었습니다. Flutter의 도입은 크로스 플랫폼 반응형 UI 구현을 가능하게 하여, 사용자 경험의 일관성을 높였습니다. 이제 파트너들은 다양한 OS 환경에서 동일한 경험을 하게 되므로, 학습 비용도 줄어들고, 혼란이 줄어드는 장점을 경험하고 있습니다.이러한 변화는 단순히 기술적인 접근방식이 아닌, 사업의 방향성을 전환하는 계기로 작용했습니다. 파트너사들이 원하는 효율적인 주문 관리 시스템을 제공하기 위해, 기존의 네이티브 아키텍처에서 벗어나 새로운 기술 스택으로 과감히 옮겨갔습니다. Firebase와 같은 클라우드 서비스를 활용하여 실시간 데이터 업데이트와 동기화가 가능하게 되었고, Flutter의 강점을 극대화하여 사용자 친화적인 UI/UX도 구현됐습니다. 이로 인해 즉각적인 피드백을 수렴할 수 있는 구조가 마련됐습니다.
결국 Flutter의 도입은 배달의민족이 다가오는 비즈니스의 다양한 요구 사항에 기민하게 대응할 수 있게 해주었고, 이는 파트너들에게도 직접적인 혜택을 주는 효과를 가져왔습니다. 개발자와 디자이너 모두가 열정적으로 참여할 수 있는 환경을 조성하게 되어 전체적인 팀워크 역시 향상되었습니다.
Clean Architecture로 관리의 효율성을 극대화하다
배달의민족은 Clean Architecture를 통해 비즈니스 로직과 UI 로직을 명확하게 분리함으로써 코드의 관리가 용이해졌습니다. 플랫폼 별로 다른 요구 사항에 맞춰 커스터마이징할 수 있는 유연한 구조를 갖춤으로써, 사업 환경의 변화에 즉각 대응할 수 있었습니다. 명확한 계층 구조와 책임 분리가 이루어진 덕분에 각 개발자는 자신의 역할에 집중할 수 있었고, 다른 사람의 코드에 대한 의존성이 줄어들었습니다.프로젝트는 Feature 단위로 모듈을 나누어 개발되었습니다. 이로 인해 특정 기능의 변경이 다른 부분에 영향을 미치지 않도록 하였습니다. 각 기능은 데이터, 도메인, 프레젠테이션 계층으로 나뉘어 코드를 구성했습니다. 이 과정에서의 효과는 개발 속도 향상과 품질 유지였습니다. 팀원들은 각 계층의 역할과 책임을 명확히 이해할 수 있었고, 코드 리뷰 시에도 그 기준을 쉽게 파악해 효율적인 피드백을 주고받을 수 있었습니다.
개발 과정에서 발생할 수 있는 문제를 초기에 예방할 수 있는 구조를 마련한 것은 Clean Architecture의 또 다른 장점입니다. 의존성을 명확히 하여 테스트 가능한 구조를 제공함으로써, 품질 좋은 코드를 유지할 수 있었습니다. 개발자가 아닌 팀 집행부가 대규모 프로젝트 진행 상황을 한눈에 확인할 수 있어 관리하기에도 용이한 이점이 있었습니다. 이를 통해 각 파트너에게 안정적이고 일관된 서비스를 제공할 수 있었고, 비즈니스 로직을 변경하는 일이 hadn’t ever been noticed.
웹뷰 기반 컨테이너 앱으로의 전환
최근 배달의민족은 macOS와 Android 태블릿/POS 버전에서 Flutter를 사용하고 있습니다. 그러나 Windows와 iOS로의 전환을 고려하면서 배포 속도 문제를 심각하게 고민하게 되었습니다. 웹 기반 아키텍처로의 전환은 긴급한 상황에서의 서비스를 개선하기 위해 필수적이었습니다. 웹뷰 기반의 컨테이너 앱으로 전환함으로써 즉각적인 업데이트가 가능하게 됐고, 플랫폼 간의 일관된 배포가 가능해졌습니다.이전에는 각 플랫폼별로 수일 내에 앱 심사 및 업데이트가 필요했지만, 웹뷰로의 전환 후 즉각적인 배포가 가능해져 긴급한 버그 수정 시 팀의 부담을 덜 수 있었습니다. 이는 고객의 주문이 실시간으로 차질 없이 처리되도록 함으로써 비즈니스 손실을 최소화하는 데 중요한 기여를 하였습니다.
이러한 변화는 아키텍처의 장점을 극대화하는 데 큰 도움이 되었습니다. 기존의 인프라 계층을 그대로 재사용하면서도, 웹 기반의 비즈니스 로직으로의 이전이 가능하였으며, 인프라의 변경 없이도 고도화된 기능을 제공하게 되었습니다. 이로 인해 전환 과정에서 범위를 최소화할 수 있었고, 팀이 순조롭게 운영될 수 있었습니다.
배달의민족의 Flutter 도입 과정과 아키텍처 설계를 통해 얻은 혜택은 기업의 효율적인 운영 노하우로 이어졌습니다. 당사자들은 변화의 중요성을 인지하고 기존의 시스템을 주저하지 않고 변혁하기로 결정했으며, 이러한 결단이 가져온 긍정적인 변화를 통해 우리는 앞으로도 지속적으로 발전할 수 있는 기반을 마련하게 되었습니다. 이는 더 많은 기업이 변화하는 환경 속에서도 각자의 가능성을 극대화할 수 있는 방향성을 제시합니다.