도메인과 인프라의 분리
·
아키텍처
보통 프로젝트를 할 때, 자바를 이용한다면 저는 거의 스프링을 주로 씁니다. 또한 스프링을 쓰면 JPA도 거의 필수적으로 사용하게 됩니다.거기다 Data JPA를 쓰게 되면 다음처럼 JPA Entity가 생성됩니다.@Entity@Table(name = "user")public class Member { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long memberId; ...}이후 UserEntity에 메서드를 추가하거나 할 수 있습니다. 그런데 이 클래스가 Entity일까요?📌 Entity?우선 Entity를 3가지 종류로 나누어보겠습니다.Domain EntityDB EntityJPA EntityDomain..
FCM을 통한 백엔드에서의 푸시 알림 전송
·
데브코스
4차 프로젝트에서 추천 편지나 타겟 편지 등 다양한 알림을 보내야 하는 상황이 있었습니다. 이때 저희는 단순히 알림 페이지 내에서 관리하는 것뿐만 아니라, 사용자에게 푸시 알림을 보내는 방법에 대해 고민하였습니다. 앱이 아닌 웹 환경이므로 어떻게 할지 고민하다가 FCM을 이용하기로 하였습니다.📌 FCM이란?FCM은 Firebase Cloud Messaging으로, 무료로 메시지를 보낼 수 있는 크로스 플랫폼 메시징 솔루션입니다. FCM은 Google의 클라우드 메시징 서비스이고, 토큰을 이용해 사용자를 식별하고 푸시 메시지를 보낼 수 있습니다.📌 어떻게 사용자는 푸시 알림을 받게되는걸까?사용자는 알림을 허용하면 FCM의 고유한 토큰을 발급받습니다. 이때 이 토큰을 이용하여 푸시 알림이 이루어지게 됩니..
레이어 아키텍처 제대로 적용하기
·
아키텍처
레이어 아키텍처는 비교적 단순하고 직관적인 아키텍처입니다. 그래서 스프링을 처음 배울 때 레이어 아키텍처를 통해 학습하곤 합니다. 또한 프로젝트 내에서도 레이어 아키텍처는 주로 사용됩니다.그런데 우리가 사용하는 레이어 아키텍처는 잘 사용되고 있는걸까요? 이번 주제에서는 레이어 아키텍처에 대해서 알아보고 어떤 방향으로 레이어 아키텍처를 설계해야 하는지 확인해 보겠습니다.이 내용은 ‘자바/스프링 개발자를 위한 실용주의 프로그래밍’을 읽고 작성된 글입니다.✅ 레이어 아키텍처의 조건실제로 레이어 아키텍처를 적용한 경우를 확인해 보면, 말은 레이어 아키텍처라고 하지만, 아키텍처를 단순히 폴더 관리 용도로 사용하는 경우가 있습니다. 이런 경우의 한 가지 예시를 들어볼게요.-image - image01.png - i..
이벤트스토밍 적용기
·
데브코스
데브코스 4차 프로젝트 백엔드팀은 초기에 도메인 주도 설계를 도입하기로 하였습니다. DDD(Domain Driven Design)에서는 유비쿼터스 언어 사용하고, 도메인 모델에 집중하며, 소프트웨어 Entity와 도메인 간 개념을 일치시켜야 한다고 합니다. 하지만 팀원 모두가 DDD에 대해 미숙하고 러닝 커브가 높다고 판단하여 DDD 도입은 하지 않는 방향으로 정해졌습니다.그러다 프론트엔드와 백엔드 간의 도메인 이해도가 다른 부분이 꽤 존재하여, 소통하는 데에 문제가 발생하였습니다. 따라서 기존에 DDD를 하려고 할 때 하려고 했던 이벤트 스토밍을 진행하기로 하였습니다. 저희 팀에서는 프론트팀, 백엔드팀, 디자이너팀이 있는데, 소통 문제를 해결하기 위해 팀들 간의 공통된 이해와 도메인에 대한 깊은 이해를..