일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- Spring Batch
- GitHub Actions
- api rate limit
- 한국대학생it경영학회
- ddd
- compile()
- 도메인 주도 개발 시작하기
- java
- kusitms
- 이펙티브자바
- reactive operaton
- 객체지향 쿼리 언어
- 최범균
- java on azure day seoul 2025
- 영속성
- cicd
- api limit
- RESTClient
- Spring
- 백엔드
- jdbc
- 30기
- api rate limiter
- Domain Driven Design
- 자바 ORM 표준 JPA 프로그래밍
- 큐시즘
- springboot
- JPQL
- 교육기획팀원
- JPA
- Today
- Total
목록분류 전체보기 (73)
코딩은 마라톤

[ 도입 배경 ]저번 프로젝트에서 활동 자동 종료 기능을 구현해야 했습니다. 활동 자동 종료 과정:1. 사용자가 자투리 시간을 입력한다.2. 자투리 시간이 지나면, DB의 활동 상태는 자동으로 종료 상태로 변경된다. 자동으로 변경해야 하는데, 이 기능을 구현하려면 TTL을 사용해야 한다고 생각했습니다. 그래서 활동 시작 시점에 TTL을 자투리 시간만큼 설정해두고 TTL이 지나면 비동기 처리되면 되지 않을까.. 생각하고 방법을 모색하던 중에,,, RabbitMQ의 Delayed Message Plugin을 알게 되었습니다. [ RabbitMQ ]RabbitMQ는 오픈소스로 개발된 메시지 브로커입니다. RabbitMQ는 여러 프로토콜을 지원하지만, 대다수는 AMQP(Advanced Message Queu..

근황큐시즘 30기를 수료한 후 종강도 맞이하면서, 요새 딱히 바쁘게 지내고 있지 않은 것 같다.무언가를 시작할 때 고민이 많아 "할까, 말까?"를 고민하다가 결국 안 하는 경우가 많아서, 자연스레 바쁘지 않은 생활이 이어지는 듯하다. 그래도 이번에 스터디를 만들어 큐시즘 개발 파트 일부 사람들과 토비의 스프링 3.1 Vol. 1을 읽기로 했다!개발을 하면서 다양한 기술을 배우는 것도 물론 중요하지만, 요즘은 워낙 자료가 풍부해 새로운 기술도 며칠만 투자하면 구현 정도는 가능하다고 생각한다. (나뿐만 아니라 대다수의 개발 경험이 있는 사람들이라면..?)하지만 정작 지금 사용하는 프레임워크인 SpringBoot는 물론, 그 기반인 Spring에 대해 깊이 알고 있느냐는 질문에는 솔직히 "No"라고 답할 수밖..

서론한 달 여만에 블로그를 작성하네요...큐시즘에서 진행한 밋업이 성공적으로 마무리되고, 큐시즘 30기 수료까지 끝이 났습니다. 기업 프로젝트가 끝나고 회고를 작성했으니, 밋업도 쓰는 게 인지상정 (기업 프로젝트 회고 : https://developer-anxi.tistory.com/60)30기 밋업 프로젝트 회고 지금 시작합니다! 프로젝트 소개우리 팀이 만든 서비스는 "조각조각"입니다.‘조각조각’은 일상 속에서 발생하는 자투리 시간을 의미 있게 활용할 수 있도록 돕는 개인 맞춤형 활동 추천 서비스입니다. 자투리 시간?개인 맞춤형 활동 추천 서비스? 글을 읽고 무슨 서비스인지 이해하기 어려울 수 있어요.그런 분들은 우리 서비스를 한 번 사용해 보시면 좋을 거 같습니다! (제발 사용해 달라는 뜻.) 배..

표현 영역과 응용 영역표현 영역 : 사용자의 요청 해석, 요청에 상응하는 응용 서비스 실행응용 영역 : 실제 사용자가 원하는 기능을 제공하는 서비스응용 서비스 역할응용 서비스는 사용자의 요청을 처리하기 위해 리포지터리에서 도메인 객체를 가져와 사용한다.응용 서비스는 도메인 영역과 표현 영역을 연결하는 창구응용 서비스가 복잡하면 서비스에서 도메인 로직 일부를 구현하고 있을 수 있음 → 도메인 로직을 서비스에서 사용하고 있을 수 있음응용 서비스는 트랜잭션 처리 담당도메인 로직 넣지 않기도메인 로직을 응용 서비스에 분산해서 구현할 경우 문제점코드 응집성 떨어짐도메인 데이터와 도메인 로직이 한 영역에 위치하지 않기 때문여러 응용 서비스에서 동일한 도메인 로직을 구현할 가능성이 높아짐응용 서비스 구현응용 서비스는..

진행 중인 프로젝트에서 최근 ChatGPT를 연동해서 응답을 받아와야할 상황이 생겼습니다.OpenAI Java SpringBoot 라이브러리도 있기는 하지만 (https://github.com/TheoKanning/openai-java?tab=readme-ov-file)라이브러리보다 직접 구현하는게 나중에 API 명세가 바뀌더라도 변경하는데 용이하지 않을까 해서 구현해보았습니다! RestClient와 WebClient를 사용하여 구현할 수 있는데 저는 WebClient를 사용하였습니다!* 추후 RestClient와 WebClient에 관한 블로그도 올릴게요! 1. OpenAI API 요청과 응답 확인하기Create Chat Completion API를 사용하였습니다! (참고: https://platfor..
CQRS명령(Command) 모델과 조회(Query) 모델을 분리하는 패턴명령 모델상태를 변경하는 기능을 구현할 때 사용한다.ex) 회원가입, 암호 변경, 주문 취소 등 상태(데이터)를 변경하는 기능조회 모델데이터를 조회하는 기능을 구현할 때 사용한다.ex) 주문 목록, 주문 상세처럼 데이터를 보여주는 기능 용도엔티티, 애그리거트, 리포지터리 등의 모델은 상태를 변경할 때 주로 사용한다.즉 도메인 모델은 명령 모델로 주로 사용된다. 정렬, 페이징, 검색 조건 지정과 같은 기능은 조회 기능에서 사용한다.즉 조회 모델을 구현할 때 주로 사용한다.스펙검색을 위한 스펙검색 조건이 고정되어 있고 단순하면 다음과 같이 특정 조건으로 조회하는 기능을 만든다.public interface OrderDataDao { ..

JPA를 이용한 리포지터리 구현모듈 위치리포지터리 인터페이스는 애그리거트와 같이 도메인 영역에, 구현할 클래스는 인프라스트럭처 영역에 속한다.리포지터리 기본 기능 구현ID로 애그리거트 조회하기애그리거트 저장하기public interface OrderRepository { Order findById(OrderNo no); void save(Order order);} 인터페이스는 애그리거트 루트를 기준으로 작성한다.위 리포지터리를 JPA로 구현하는 리포지터리는 JPA의 EntityManager를 이용해서 구현한다.@Repositorypublic class JpaOrderRepository implements OrderRepository { @PersistenceContext private Entity..

주의제목은 거창하지만 내용은 그렇지 않을 수 있습니다.. 최근에 생긴 고민큐시즘 동아리를 하면서 스터디와 2달 간 진행하는 밋업 프로젝트를 진행하고 있습니다.여러 활동을 진행하고 다양한 사람들을 만나면서 여러 안목을 쌓고 있는 와중에 고민이 생겼습니다. 누군가에게 내가 아는 내용을 알려줄 때, 그러나 확실하지 않은 내용일 때, (내 주관대로 내용을 정의하였을 때)1. 내가 아는 선에서 최대한 설명을 해준다. 애매모호함을 곁들인,,2. 모른다고 한다. 위의 고민거리가 대체 무슨 말이지?! 라고 이해 못하실 독자분들도 계실 거 같아 두 가지 예시를 들어 설명하겠습니다. 예시 1. MSA에서 다른 도메인의 정보를 어떻게 가져와야할까요?백엔드 스터디인 "큐백" 에서 스터디를 진행하고 있습니다.큐백에서는 여러 도..