Appjam 전 간단한 프로젝트를 연습하려고 했었다...
·
Back-end
사실... Appjam 합숙 전에 모든걸 다 끝내고 들어가려 했으나 못 했고 회고식아니면 나중에라도 더 구체화 시켜서 올려보려고 한다... 아래 있는 글들은 우선 먼저 적어놨던거라도 올리고자 이렇게 적게 되었다.https://github.com/guswnsj0112/spring-auth-board계기이번 SOPT 38기 AppJam에서 운 좋게 Server로 참여 할 수 있게 되었다. 하지만 가장 큰 문제가 있었다. 바로 내가 백엔드를 올해 처음한다는 점이였다. 물론 파트장님께서는 세미나 때 친철하고 잘 알려주셨긴 했지만 학기 중 시간 관리를 못 했던 나에게는 아직 미숙한 부분이 많이 보였다. 그래서 Appjam 시작 전까지는 인증/인가, 엔터티 등 다양한걸 공부해서 가려고 한다.구조우선 서버 리드님과 ..
DDD(Domain-Driven Design)란? 핵심 개념과 계층형 아키텍처
·
CS/Architecture
DDD(Domain-Drvien Design, 도메인 주도 설계) 란?도메인 모델을 기반으로 복잡한 소프트웨어 시스템을 설계하고 개발하는 방법론도메인(Domain)소프트웨어가 해결하고자 하는 문제 영역→ 도메인이 무엇인지 보다는 도메인에 포함되는 것이 무엇인가 정의를 내리는게 더 중요!예를 들어 여행 애플리케이션은 예약, 결제, 여행 일정, 회원 관리 등의 하위 도메인으로 나눌 수 있다. 예약 도메인 안에는 예약 요청, 확정, 취소와 같은 상태와 행위가 존재할 수 있다.이처럼 여러 도메인들이 상호작용하며, 비즈니스 도메인별로 나누어 설계하는 것을 도메인 주도 설계라고 한다.도메인과 객체의 차이점객체(Object)객체는 프로그램에서 특정 개념을 표현하기 위해 상태와 행동을 하나로 묶은 단위이다.객체는 현실..
[Spring, Docker] 모듈식 모놀리스에서 Docker 배포하기
·
Back-end/Spring
우선 모듈식 모놀리스로 아키텍처를 가져갔다면 전통적인 모놀리식과 다르게 여러 개의 모듈이 있을 것이다. 하지만 모듈러식 모놀리스는 여러 모듈로 코드를 나누더라도, 최종적으로는 실행 모듈인 app에서 하나의 JAR 파일을 만들어 배포한다.우선 app 모듈에서 배포를 할 예정이라 app → Tasks → bootJar 를 클릭해줬다.app/build/libs 의 경로에 .jar로 끝나는 파일이 생성된다.이제 Dockerfile을 성해준다. (확장자 x)Dockerfile 생성하기방법은 두 가지가 있다1.jar 있는 곳에 Dockerfile 두기.jar 파일이 있는 곳에 Dockerfile을 생성하는 방법모듈식 모놀리스에서 생기는 단점1. Dockerfile이 build/libs 안에 들어감2. build 폴..
멀티모듈 환경에서 공통 모듈을 설계하는 방법: 유스케이스 분리와 인프라 설정 제어 with Spring Boot
·
CS/Architecture
도메인 로직과 유스케이스핵심 비즈니스 로직현실 세계의 비즈니스 규칙 그 자체유스케이스사용자가 시스템을 통해 어떤 목적을 달성하는 흐름예시도메인 로직:- 게시글 제목은 비어 있을 수 없다.- 삭제된 게시글에는 댓글을 달 수 없다.- 작성자만 게시글을 수정할 수 있다.유스케이스:- 게시글 작성하기- 게시글 수정하기- 게시글 삭제하기- 게시글 목록 조회하기즉, 유스케이스는 도메인 로직을 사용해서 하나의 기능 흐름을 완성하는 계층이다.유스케이스는 공통모듈에 담지 않는 것이 좋다유스케이스를 공통 코드로 뺀다면, 사이드 이펙트가 발생하기 쉬울 뿐만 아니라 예외 케이스를 위한 분기 처리도 들어가게 되면서 많은 문제가 발생한다또한 유스케이스는 서비스마다 요구 사항이 다르기 쉽기 때문이다예를 들어 게시글 작성 이라는 이..