목록으로
'언젠가 읽기' 컨텐츠는 논문이나 영문 컨텐츠 등 언젠가 읽으려고 즐겨찾기 하고선 읽지 않고 계속 미룰만한 컨텐츠를 읽고 요약하거나 소개합니다.

Flutter 클린 아키텍처: 작은 앱에서 대규모 프로젝트까지 맞춤 설계

FLUTTER 클린 아키텍처: 작은 앱부터 대규모 프로젝트까지 맞춤 설계

소개

안녕하세요. 저는 LINE+ ABC Studio에서 앱을 개발하고 있는 윤기영입니다. 운영 중인 앱의 규모가 커지면서 기존 구조로는 유지 보수와 확장이 어려워졌습니다. 이를 해결하기 위해 여러 아키텍처 중 클린 아키텍처를 도입하게 되었고, 그 과정을 여러분께 소개하고자 합니다.

클린 아키텍처란?

클린 아키텍처는 소프트웨어 엔지니어 로버트 C. 마틴이 제안한 설계 원칙을 따르는 아키텍처로, 계층화된 구조를 통해 확장성과 테스트 용이성을 제공합니다. 대규모 프로젝트에 적합하며, 각 계층의 책임을 명확히 분리하여 코드의 가독성과 유지 보수성을 높입니다.

첫 번째 아키텍처: View와 데이터의 직결

처음에는 View에서 직접 서버로 데이터를 요청하여 화면을 구성했습니다. 작은 프로젝트에서는 문제가 없었으나, 프로젝트가 커지면서 다음과 같은 문제들이 발생했습니다:

  • 해석의 어려움: 하나의 클래스에 여러 기능이 섞여 있어 코드를 이해하기 어렵습니다.
  • 잦은 수정: 클래스의 역할이 많아 수정 시 여러 부분을 함께 변경해야 합니다.
  • 테스트의 어려움: 데이터 처리와 화면 갱신을 동시에 테스트하기 어려웠습니다.

두 번째 아키텍처: 화면과 데이터 분리

첫 번째 아키텍처의 문제를 해결하기 위해 화면을 다루는 부분과 데이터를 다루는 부분을 분리했습니다. 예를 들어, Provider를 사용하여 ViewModel을 구현함으로써 책임을 분리하고 코드의 가독성과 유지 보수성을 향상시켰습니다.

클린 아키텍처의 도입

프로젝트의 규모가 증가함에 따라, 클린 아키텍처를 도입하여 앱의 구조를 총 6단계에 걸쳐 진화시켰습니다. 각 단계마다 실제 발생할 수 있는 문제들을 예시로 들어 해결 방안을 제시하였으며, 예제 앱의 구조가 어떻게 변화하고 발전하는지를 설명했습니다. 클린 아키텍처는 Flutter뿐만 아니라 다른 앱 개발에도 적용 가능합니다.

결론

클린 아키텍처를 도입함으로써 대규모 프로젝트에서도 유지 보수와 확장이 용이해졌습니다. 책임의 분리를 통해 코드의 가독성과 테스트 용이성을 높였으며, 이는 궁극적으로 높은 품질의 소프트웨어를 개발하는 데 기여했습니다.

함께 읽으면 좋은 참고 자료

  • 로버트 C. 마틴의 클린 아키텍처
  • Flutter로 배우는 소프트웨어 아키텍처
  • 대규모 애플리케이션을 위한 아키텍처 패턴

[출처] Flutter 클린 아키텍처: 작은 앱부터 대규모 프로젝트까지 맞춤 설계