조립식으로 서비스 개발하기 with Flutter - 소개
조립식 개발의 시작
모든 서비스 애플리케이션은 다양한 기능들을 포함하고 있습니다. 처음에는 MVP(Minimum Viable Product)로 개발했지만, PMF(Product-Market Fit)를 찾지 못해 새로운 서비스를 만들 때마다 유사한 기능들을 반복적으로 개발하는 상황에 직면하게 됩니다. 이로 인해 반복적인 시간과 비용이 낭비되고, 비효율적인 개발 과정이 지속됩니다.
조립식 개발의 목표는 이러한 문제를 빠르게 개선하여, 비용을 절감하고 신속한 실험을 통해 PMF를 빠르게 찾아내는 것입니다. 이를 통해 우리는 더 나은 효율성과 성과를 달성할 수 있습니다. 위 문제들을 해결하기 위해 최근 저는 조립식으로 다양한 기능들을 빠르게 개발할수 있는 방법을 만들어 나가고 있습니다.
문제점들
애플리케이션 서비스를 개발하기 위해서는 다양한 언어와 기술 스택이 필요합니다:
• Web: React, NextJS 등
• Mobile: Swift, Kotlin, React Native, Flutter 등
• Backend: Node, Spring, Go(Gin, Echo, Ent), REST, GraphQL, gRPC 등
복잡한 기술 스택 관리는 개발팀에게 큰 부담을 줍니다.
다양한 기술 스택을 다룰 수 있는 전문 개발자를 채용하는 것은 쉽지 않습니다. 각각의 기술 스택에 대한 깊은 이해를 가진 개발자를 찾는 데 시간이 걸리며, 이로 인해 채용 과정이 길어지고 인건비가 증가할 수 있습니다. 이는 프로젝트 일정에 영향을 미치고, 전체적인 개발 비용을 높이는 요인이 됩니다.
여러 기술 스택을 사용해야 하는 상황에서는, 각 플랫폼에 맞는 개발을 별도로 진행해야 하므로, 동일한 기능을 여러 번 구현하는 비효율이 발생합니다. 이는 프로젝트 일정 지연과 함께 예상 밖의 개발 비용을 초래하게 됩니다. 또한, 각 기술 스택에 대한 학습 곡선이 길어질 수 있어 개발 속도 저하로 이어집니다.
다양한 기술 스택을 사용하는 경우, 애플리케이션의 유지보수와 확장이 복잡해집니다. 각 플랫폼에 맞는 코드를 수정해야 하며, 이는 코드 일관성을 유지하기 어렵게 만들어, 추후 버그 발생 가능성을 높입니다. 결과적으로, 유지보수와 확장에 소요되는 비용과 시간이 크게 증가하게 됩니다.
이러한 문제들은 개발 효율성을 저하시킬 뿐만 아니라, 비즈니스 목표 달성에 걸림돌이 됩니다. 특히 MVP를 통해 PMF를 찾아야 하는경우 위와 같은 선택은 분명히 큰 걸림돌이 될것 입니다
최근 빠르게 성장하고 있는 Flutter 프레임워크는 이러한 모든 문제를 해결하기 위해 다방면으로 발전해왔고, 건강한 에코시스템 덕분에 Dart 언어 하나로 풀스택 개발이 가능한 환경을 제공합니다. FFI 기능은 다양한 언어와 기술을 통합할수 있게 해주는 핵심 요소이며 실제로 Flutter SDK를 사용하는 개발환경으로 통합되고 있습니다 예시(onnxruntime) 이러한 이유로 Flutter에 관심을 갖게 되었습니다.
내가 바라보는 솔루션
해결해줄 핵심 기술 스택은 아래와 같습니다
1. Clean Architecture: 애플리케이션을 계층화하여 유지보수성과 확장성을 높이는 아키텍처 패턴입니다. 비즈니스 로직과 UI, 데이터 계층을 명확히 분리하여 코드의 재사용성을 극대화하고 각 계층별 테스트를 통해 제품이 복잡해지더라도 안정적인 개발이 가능합니다
2. mason_cli: Flutter 프로젝트에서 템플릿을 이용해 코드 생성을 자동화하는 도구입니다. 이를 통해 반복적인 코딩 작업을 줄이고 개발 속도를 높일 수 있습니다. mustache template 문법을 사용하여 구현되어 있으며 조립식 개발을 가능하게 하는 도구 입니다
3. melos: 모노레포 환경에서 Flutter 패키지를 관리하는 도구입니다. 여러 패키지를 동시에 관리하고 테스트할 수 있어 대규모 프로젝트에 적합합니다.
4. BloC: Flutter에서 상태 관리를 위한 아키텍처 패턴입니다. 이벤트 기반 상태 관리를 통해 애플리케이션의 복잡한 상태 변화도 효과적으로 관리할 수 있습니다.
5. Injectable: 의존성 주입을 간편하게 구현할 수 있는 라이브러리입니다. 코드베이스에서 의존성 관리가 더 효율적으로 이루어질 수 있도록 도와줍니다. 마이크로 패키징을 쉽게 해줌으로써 각 기능 조각들의 통합을 지원합니다
6. serverpod: Dart로 작성된 백엔드 프레임워크로, Flutter와 원활하게 통합되어 강력한 서버 사이드 애플리케이션을 구축할 수 있습니다.
7. jaspr: Flutter와 유사한 방식으로 웹 애플리케이션을 구축할 수 있는 프레임워크입니다. 특히 SEO(검색 엔진 최적화) 측면에서 큰 장점을 제공합니다. 대부분의 Flutter 애플리케이션은 클라이언트 사이드 렌더링(CSR)을 사용하지만, Jaspr는 서버 사이드 렌더링(SSR)을 지원하여 웹 페이지가 검색 엔진 크롤러에 더 잘 노출되도록 합니다. 이는 검색 결과에서 더 높은 가시성을 확보할 수 있으며, 사용자 경험을 개선할 수 있는 중요한 요소입니다.
다음 글에서 클린 아키텍처가 간단하게 작성될 예정?
댓글
로그인 후 댓글을 남길 수 있습니다.
아직 댓글이 없습니다.