#ABC프로젝트멘토링 #유클리드소프트 #고용노동부 #대한상공회의소 #미래내일일경험사업
클린아키텍처 프론트엔드 백엔드 SpringBoot Vue Docker MySQL Redis API 개발자 협업 테스트 소프트웨어개발 테크 노트: 클린 아키텍처를 활용한 프로젝트 구조
최근 클린 아키텍처를 적용한 프로젝트를 진행하면서, 그 구조와 설계 원칙에 대해 깊이 있게 고민해보았습니다. 이 블로그에서는 프로젝트의 전반적인 구조를 한눈에 정리하고, 각 구성 요소의 역할과 상호작용을 설명하겠습니다.
프로젝트 개요
이 프로젝트는 프론트엔드와 백엔드가 명확히 분리된 구조로 설계되었습니다. 프론트엔드는 Vue(Vite)와 Axios를 사용하여 API를 호출하고, 백엔드는 Spring Boot를 중심으로 다양한 기술 스택을 활용하여 안정적이고 확장 가능한 시스템을 구축하는 것을 목표로 합니다.
프론트엔드 구성
프론트엔드는 Vue.js와 Vite를 사용하여 개발하였습니다. Vite는 빠른 빌드 속도를 제공하며, 개발 중에 실시간으로 변경 사항을 반영할 수 있어 매우 유용합니다. Axios를 통해 API를 호출하여 데이터를 가져오고, 사용자 인터페이스를 동적으로 업데이트합니다. 이러한 구조는 사용자 경험을 향상시키는 데 큰 도움이 됩니다.
백엔드 구성
백엔드는 Spring Boot를 기반으로 하여, Security, JWT, OAuth2를 통해 인증 및 권한 관리를 수행합니다. Spring Data JPA를 사용하여 도메인 모델을 영속화하고, 데이터베이스와의 상호작용을 간편하게 처리합니다. 이러한 백엔드 구조는 보안성과 효율성을 동시에 갖추고 있습니다.
데이터베이스 및 캐시
데이터는 MySQL을 사용하여 관리하며, Redis를 통해 캐시를 구현하여 성능을 최적화합니다. MySQL은 관계형 데이터베이스로, 데이터의 무결성을 보장하며, Redis는 빠른 데이터 접근을 가능하게 합니다. 이러한 조합은 데이터 처리 속도를 크게 향상시킵니다.
배포 및 로컬 격리
Docker를 활용하여 애플리케이션을 컨테이너화하고, 배포 및 로컬 환경을 격리합니다. Docker는 다양한 환경에서 일관된 실행을 보장하며, 개발자들이 동일한 환경에서 작업할 수 있도록 도와줍니다. 이를 통해 배포 과정에서 발생할 수 있는 문제를 최소화할 수 있습니다.
클린 아키텍처의 원칙
클린 아키텍처는 엔티티, 유스케이스, 리포지토리, 프레젠터를 분리하여 각 구성 요소의 책임을 명확히 합니다. 이러한 구조는 변화에 강하고 테스트 가능한 시스템을 구축하는 데 큰 도움이 됩니다. DIP(Dependency Inversion Principle)와 경계 분리 원칙을 적용하여, 각 모듈 간의 의존성을 최소화하고, 유지보수성을 높입니다.
요구사항 관리
요구사항은 UFR(Use Case Functional Requirements) 및 UNR(Use Case Non-Functional Requirements) 코드로 추적합니다. 이를 통해 요구사항의 변경 사항을 쉽게 관리하고, 프로젝트의 진행 상황을 명확히 파악할 수 있습니다.
명명 규칙 및 협업
명명 규칙을 표준화하여 코드의 가독성을 높이고, 협업 효율을 극대화합니다. 일관된 명명 규칙은 팀원 간의 소통을 원활하게 하고, 코드 리뷰 과정에서도 큰 도움이 됩니다.
프로젝트의 장점
이 프로젝트는 클린 아키텍처를 통해 변화에 강하고, 테스트 가능한 구조를 지향합니다. 또한, 명확한 요구사항 관리와 표준화된 명명 규칙을 통해 협업 효율을 높이고, 개발자들이 보다 쉽게 프로젝트에 참여할 수 있도록 합니다. 이러한 장점들은 프로젝트의 성공적인 진행에 큰 기여를 할 것입니다.
이와 같은 구조와 원칙을 바탕으로 한 프로젝트는 앞으로의 개발 환경에서도 큰 도움이 될 것입니다. 클린 아키텍처를 적용한 이 프로젝트가 여러분에게도 많은 영감을 주기를 바랍니다.
태그

아이런 자료를 참고 했어요.
[1] Medium · Sangwoo, Yang (DAN) - Clean Architecture 사용하기. 시나리오 (https://medium.com/@dndb3599/clean-architecture-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0-c1d1fceff95b)
[2] GitHub - 클린 아키텍처 연습 (SpringBoot) - 웅's 블로그 (https://parkjeongwoong.github.io/articles/Web/21)
[3] 티스토리 - Spring Boot로 깨끗한 아키텍처 - 기록만이살길 - 티스토리 (https://recordsoflife.tistory.com/280)
[4] Reddit · r/vuejs - Vue에서 클린 아키텍처? : r/vuejs (https://www.reddit.com/r/vuejs/comments/n616ev/clean_architecture_in_vue/?tl=ko)