본문 바로가기

전체 글123

Core - Stream 도메인 DDD로써 리팩토링을 고려하여 core 모듈은 도메인과 유스케이스를 담고, 레포지토리는 저장소포트로, 구현은 api 모듈에서 jpaAdapter로 구현한다. Stream 도메인1. 값 객체 설정방송을 켜고 끄도록 할 수 있는 열쇠개념인 StreamKey현재 방송(stream)을 식별하기 위한 StreamId public final class Stream { private final StreamId id; private final StreamKey streamKey;... Long이나 string 타입이 아닌 VO를 둔 이유? 1. 타입 안정성을 고려한 설정.예를 들어, 둘 다 같은 String 타입으로 단순하게 둔다면, findById(streamKey)같은 예외를 잡을 수 없다.각각 타입을 다르게 두.. 2025. 12. 26.
멀티모듈 설정 중 하위모듈에서 의존성 인식문제 원인멀티모듈 프로젝트에서 common, core 모듈을 구성중에 Lombok 의존성 오류가 발생했다. org.projectlombok:lombok: 형태로 버전이 비어 있는 에러가 반복됐는데, 이전버전에서는 적용 되는 걸로 보아 차근차근 생각해보기로 했다.행동문제를 해결하기 위해 Lombok과 Spring Boot의 역할을 분리해서 생각했다. 나의 의도는 common, core 모듈은 스프링을 의존하지 않는다. 하지만 롬복은 사용하고 싶었기에 root에서 subprojects{} 에서 스프링 부트를 제거하면서부터 발생함을 알게 되었다. 롬복은 스프링 부트와 관련이 없는데, 롬복 인식을 할 수 없을까.. 플러그인 문제일까 해서 java-library 나 java 도 지워보고, 설정을 이리저리 만져보다 다른.. 2025. 12. 25.
Heureum 프로젝트 시작에 앞서. 프로그래머스에서 진행한 팀 프로젝트 Gooream이 끝나고, 해보고 싶었던 한가지 프로젝트를 시작해보려고 한다. 이 프로젝트는 기간을 정해서 한다기 보다는 학습 내용을 기록하면서 해보고 싶다. 특히 블로그에 깔끔하게 정리한다기보다는 일기식에 가까울 것 같다. 개인 학습 일지정도 된다. 주제는 인터넷 스트리밍 방송이다. 나만의 차별성이 있는 아이디어는 아직 생각하진 않았지만 바로 시작하고 싶어 글부터 쓴다. 방송을 켜고, 후원 받기. 음성을 변조시킨 도네이션, 특히 내 서버의 api를 제공해서 또 다른 서비스를 만들 수 있게 하는 것도 구현해보고 싶다. 프로젝트 구조를 어떻게 짤까 고민했다. 우선 도커까지만 사용할 예정이다. 이전에 진행한 Gooream는 쿠버네티스까지 사용했었지만, 이건 개인프로젝트에다가.. 2025. 12. 24.
도메인 주도 설계란 (DDD) 등장배경이전의 기술 중심의 설계에서는 핵심 비즈니스 로직과 부가적 로직을 분리하지 않고 개발을 했다. 작은 서비스의 경우, 크게 문제가 없었지만, 시간이 지남에 따라, 로직들이 엉키고 각 객체간 의존성이 복잡하게 엮여있어 각각의 경계가 사라지고, 여러가지 문제가 발생하게 되었다. 특히 실무에서 흔하게 발생하는 요구사항이 바뀌거나, 비 개발자와 소통 시 서로 간 오해가 발생하고 비용이 증가되어 버렸다. 도메인 전문가와 개발자가 서로 협력해 해당 도메인 모델을 정의해 구분하고, 이를 활용해 소프트웨어를 개발/설계 하는 방법론이 DDD이다. 도메인(Domain)도메인이란, 소프트웨어로 해결하고자 하는 핵심 비즈니스 영역으로써, 예를 들면 은행업무에서의 도메인 영역은 계좌 이체, 잔액 조회, 계좌 개설과 같이 .. 2025. 10. 26.
자바 코딩테스트 여러가지 팁 큐나 스택 구현체로 ArrayDeque를 선택하자, 접근, 삽입/삭제 O(1)로 더 빠르다.string.split() 사용하지말고 StringTokenizer 사용입출력시, Scanner, sout 사용 X, BufferedReader와 Writer를 사용하자.순회 전에 배열 전체 초기값을 -1로 정하고, 반대로 조건에 부합하는 경우에만 값을 변경. Arrays.fill(arr, -1);커스텀 정렬 시, Arrays.sort(arr, (a, b) -> { a[1] - b[1] }); (2번째 파라미터는 Comparator 람다식 구현)음수라면, a가 먼저 배치, 양수라면, b가 먼저 배치,우선순위 큐 (힙)로 정렬 할 수도 있다. PriorityQueue pq = new PriorityQueu.. 2025. 9. 15.
프로젝트 관리 일정 계획과 작업- 작업의 분할- 작업의 명세화 작업의 양을 인원-월(PM)로 표시함, 1PM은 중급 수준 개발자의 한 달간 작업량- 작업 진행 순서의 정의 (PERT/CPM 도표)- 인력 배정- 비용 산정- 개발 일정의 수립 (CPM -> 간트차트로 도표화) WBS- 작업 분할 구조, 계층 구조로 표현- 최하위 수준의 작업을 작업 패키지라고 한다. 정량적 측정이 가능한 입출력물을 가짐 PERT- 작업들의 선후 관계를 표현한 사이클이 없는 방향 그래프CPM : 임계경로 방법- 일정 계획을 위한 알고리즘적 분석 방법- 임계경로는 시작, 종료 작업까지의 경로 중 가장 긴 경로- 임계 경로상의 작업들은 지연이 허용되지 않는 작업 CPM 네트워크 간트 차트- 막대 모양으로 작업들의 순차, 병행 순서를 보.. 2025. 3. 11.