프로젝트 시작 전 가장 고민을 많이 하고, 결정하는 사항 중 하나죠!
프로젝트를 어떻게 설계 하냐에 따라서 추후 유지보수성에도 중요한 영향을 끼친다고 생각해요.
물론 그냥 MVC로 가볍게 시작해도 되지만, 어차피 공부할 겸 만드는 프로젝트니까.
최대한 나중에 유지보수 하기 쉬운 것으로 고려해서 결정해 보려고 해요.
먼저 Server!
Server는 사실 딘님이 만든 Base project가 헥사고날 아키텍처 패턴이에요.
App만 개발하던 저 같은 클라이언트에게는 생소한 아키텍쳐 이지만,
전 CTO님의 헥사고날 아케텍쳐에 대한 생생 강의를 듣고 나니 아주 훌륭한 아키텍처라는 걸 알 수 있었어요!!
헥사고날 아키텍처의 구조는 아래 그림과 같아요.
그림을 보면 어려워 보이지만 그냥 쉽게 비즈니스 로직과 외부 애플리케이션을 느슨하게 결합할 수 있도록 하는 게 목표인 아키텍처 에요.
단점이라고 한다면, 기능을 만들 때 생성되는 파일들이 엄청나게 많아요. 정석대로 헥사고날 아키텍처에 따라서 만들면
로직을 구현하는 것보다 파일을 만드는데 시간이 더 소모되는 상당히 곤란해질 수 있는 상황이 연출되기 때문에,
굳이 생략해도 되는 파일들은 가볍게 무시하고 진행하기로 해요.
가장 중요한 건 헥사고날의 핵심인 외부 애플리케이션
즉 jpa 를 사용하던 r2dbc를 사용하던 무엇을 사용하든 쉽게 갈아 끼워서 사용할 수 있도록 만드는 거예요!
프레임 워크에 종속적이지 않게 설계되어 있기 때문에 나중에 필요에 의해서
Spring을 버리고 다른 걸 사용해도 돼요. 아주 좋죠?!
구조는 아래처럼 만들었어요.
Socket 서버는 사실... 프로젝트 자체에 필요한 코드가 얼마 없어서 아키텍처를 적용할 그런 게 없어요....
이 친구는 그냥 작고 소즁하게 만들어 줍시다!
Socket 서버야 그래도 네가 싫은 게 아니야 다만 다른 게 너무 신경 쓸게 많단다....
이제 제 친구 Client 를 설계해 볼까요?
원래 Android만 놀았는데 이제 오랜 친구는 떠나보내고
새로운 친구 Flutter랑 놀고 있어요.
이 녀석은 혼자서 Android, iOS, web, mac, window까지 다 커버를 쳐줘요.
저는 이 녀석으로 Android, iOS, web 까지만 개발을 해봤는데
굉장히 만족하고 있어요. 너무 좋은 친구예요.
이제 각설하고,
Flutter는 상태 관리라는 개념이 있어요! 그냥 쉽게 설명하면
UI와 상호 작용하는 데이터를 관리해준다라고 표현이 가능할 것 같네요.
기존에 bloc을 써봤는데 이 녀석도 훌륭하지만 사실 귀찮은 게
bloc은 자식은 부모의 상태를 참조 가능하지만 역으로 참조하려면 조금 까다롭다고 해야 하나
여하튼 너무 정석적이라.
이번에는 provider를 좀 더 보완한 riverpod을 사용해 보려고 해요.
마침 찾아보니까 훌륭한 clean architecture sample 프로젝트가 있네요.
https://github.com/Uuttssaavv/flutter-clean-architecture-riverpod#project-description
대충 저도 아래처럼 디렉터리 구성을 했어요!
정리하자면
Flutter 스펙은 아래와 같아요.
통신 : dio
상태 관리 : flutter_riverpod
Local db : hive
router: go_router
자 이제 프로젝트 구성은 어느 정도 결정이 된 것 같으니 개발을 시작해 볼까요??
'소개팅앱 프로젝트' 카테고리의 다른 글
소개팅 앱 만들기 세번째 어떤 소개팅 앱을 만들까? (0) | 2023.10.29 |
---|---|
소개팅앱 만들기 첫번째 준비물 챙기기 (0) | 2023.10.22 |
소개팅앱 만들기 시작합니다. (0) | 2023.10.22 |
행복한 코딩을 위하여!
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!