[오픈매트] - 04. MSA, 아키택처 결정하기
RECOMMEND BEFORE POSTS
- [[오픈매트] - 03. 개발방법, 기술스택, 우선순위 정하기][openmat-04]
0. 들어가면서
이전 포스트에서는 전반적인 개발방법과 우선순위에 대한 이야기를 했다.
이번에는 조금 더 구체적으로 msa 아키택처를 설계하고 개발방법을 정하고, 기술스택을 정하고, 우선순위를 정하기 위해 고민했던 생각들을 정리하고 확정지을 것이다.
1. 개발방법
어떤식으로 개발을 할지 -> 크게 모놀리식, MSA 형태의 개발을 고민하였다.
1.1. 모놀리식
모든 기능을 하나의 프로젝트에 구현하는 방식
- 처음에는 이 방식으로 개발하는 것을 고려했다.
- 하지만 어플의 기능과 서비스를 확정 짓지 않았고, 기능과 서비스의 추가와 각각의 배포가 자유로워야 한다고 생각했다.
- 따라서 모놀리식 보다는 다른 방법을 찾아보게 되었다.
1.2. MSA
마이크로서비스가 여러개 존재하고, 이를 조합하여 하나의 어플리케이션을 구현하는 방식
- 어떠한 서비스를 만들어 어플을 구성할지 정확히 정하지 않았고, 기능과 서비스의 추가와 각각의 배포가 자유로워야 한다고 생각했다.
- 추후에는 서비스에 따라 어울리는 기술스택을 다르게 적용하여 개발해보고 싶었다.
- 또한 msa형태의 개발을 경험해보고 싶었다.
- 따라서 msa형태의 개발을 고려했다.
2. 기술스택
msa형태에 어울리는 기술스택을 고려해보았다.
- Frontend
- 어플로 구현할 것이기 때문에 선택지는 native, cross-platform으로 한정했다.
- native는 ios, android 모두 개발해야 하기에 cross-platform을 선택했다.
- cross-platform으로는 flutter, react-native이 있지만
- flutter가 ui적으로나 기능적으로나 더 우위에 있다고 판단하여 flutter를 선택했다.
- Backend
- 처음에는 go를 선택해서 개발하고 싶었다.
- 개인적인 관심도 있고 하고싶은 것에 go를 쓸일이 많을거 같다는 생각 때문이었는데
- go를 선택하게 될경우 msa로 개발하기 위해 선택해야 하는 라이브러리나 방법들이 다양하고 사람들이 이걸 많이 쓴다더라! 하는게 찾기 쉽지 않아서 이 생각은 우선 접었다.
- java, spring boot를 이용하기로 했다. 개발을 좀 더 빨리 진행하고 싶기도하고 msa를 구현함에 있어서 정형화된 방법이 있어 더 쉽게 구현할 수 있을거라고 생각했다.
- 따라서 1차적으로 java를 이용한 spring boot를 이용해 개발하고 추후에는 go로 바꿔주던지 다른 서비스를 go로 개발해 추가하던지의 방법을 통해 개발을 진행하려 한다.
결론: Flutter, Spring Boot, PostgreSql
3. 우선순위
요구사항에 따른 서비스의 우선순위
- 기본적으로 회원과 인증, 인가에 대한 부분은 가장 먼저 구현해야할 부분이라고 생각하며
- 고민이었던 부분은 중고거래와 오픈매트 시스템 중 어떤 서비스를 먼저 개발하느냐 였다.
- 중고거래의 경우 중고나라, 당근마켓, 플레이주짓수(네이버카페) 등 이미 존재하는 것이 많아 후순위로 미루었고
- 오픈매트라는 이름에 맞게 오픈매트를 통한 주짓수 수련인들의 관계라던가 오픈매트 그 자체에 집중할수 있게 오픈매트 관련 서비스를 먼저 개발하고자 한다.
- 오픈매트 서비스에서 채팅도 중요하기에 같이 또는 이어서 바로 채팅 서비스를 개발할 것이다.
- 또한 오픈매트 서비스 구조에 대해 다시한번 생각하고 정립하는 시간이 필요할 것이다.
CLOSING
다음 포스트들에서 생각해 보아야할 것은 무엇일까?(일단 주저리 주저리 써보자)
- 어떠한 방법, 스택, 우선순위를 가지고 개발할지 결정했다. 이제는 우선순위에 따라 조금 더 상세하게 구체화를 시키며 개발에 들어갈 것이다.
- 따라서 다음 포스트에서는 오픈매트에 대한 구체화와 msa형태에 대한 전반적인 아키텍처를 다룰 것이다.
- 또하 회원 및 인증/인가에 관련된 개발, 인터페이스 정의, 데이터베이스 정의 등으로 구성하려한다.
RECOMMEND NEXT POSTS
REFERENCE
없음
Leave a comment