목표 일반적으로 Service 인터페이스와 ServiceImpl은 1:1인 경우가 많은데, 굳이 인터페이스와 구현체를 나눠놓은 이유가 뭔지에 대해서 작성해보기! 내용 많은 프로젝트에서 MVC 구조를 많이 채택하며, Service코드를 작성할 때 Service와 ServiceImpl로 작성하는 경우가 많은데 관습적으로 이렇게 하는경우가 많다보니 “대부분 이렇게 하던데?”라는 생각으로 따라하게 되었는데 문득 궁금증이 들게 되었습니다. 사실 Service와 ServiceImpl은 1:1인 경우가 대부분이어서 오히려 작성해야하는 코드만 늘어난다는 생각이 문득 들었습니다. 일반적인 service, serviceImpl 코드 interface ProductService { List getProductList(); ..
Overview outbox patten 구현해보기- (1) 이벤트기반 환경에서 DB상태변경과 함께 이벤트를 발생시켜야하는 경우가 있습니다. 예를들어 쇼핑몰에서 주문, 상품, 알림 서비스로 나누어져 있다고 생각했을 때, 주문이 완료되면 상품 재고 hoony-devblog.tistory.com 지난 포스팅에 이어서 outbox pattern중 Polling publisher pattern을 구현해 보겠습니다. 사실 그림처럼 구현난이도는 어렵지 않습니다. 다음 순서대로 구현 해 보았습니다. 주문이 들어올 때 한 트랜잭션 안에서 order 테이블, outbox 테이블을 insert한다. outbox 테이블을 polling한다. outbox 테이블의 payload를 aws sqs로 전송한다. order 저장 @..
Overview 이벤트기반 환경에서 DB상태변경과 함께 이벤트를 발생시켜야하는 경우가 있습니다. 예를들어 쇼핑몰에서 주문, 상품, 알림 서비스로 나누어져 있다고 생각했을 때, 주문이 완료되면 상품 재고가 감소되고 판매자에게 알림이 전송되어야 한다는 요구사항이 있다고 가정해 보겠습니다. 주문이 완료되면 ‘주문완료됨’이라는 메시지 발행과 함께 상품 , 알림 서비스는 ‘주문완료됨’ 이라는 이벤트를 구독하여 비즈니스 로직을 처리할 수 있을 것입니다. 모놀리틱 환경이라면 이벤트 구독으로 처리하지 않고, 로직을 트랜잭션으로 묶여 ACID를 보장받을 수 있겠지만, 이벤트기반 환경에서 주문서비스 주문로직이 이 완료된 후 메시지를 발행한다면 생각 할 점이 있습니다. 데이터의 일관성을 위해서는 트랜잭션이 커밋될 때 메시지..
[Spring] Cache적용하여 속도 개선하기. 적용하게 된 계기 회사내에 프로젝트를 하다가 상품등록시에 상품마다 매번 Category, Brand 등의 테이블을 조회 해와서 유효성 검증을 하고 있었다. 이걸 개선해보고 싶어서 캐싱을 적용해 봤고 포 hoony-devblog.tistory.com 지난번 포스팅때 간단하게 JCache를 이용하여 cache를 적용해 보았는데, 요번 포스팅에는 간단하게 캐시 관련해서 eventListener를 추가해서 로그를 한번 찍어보려고 한다. SimpleCacheEntryListener 구현 @Component class SimpleCacheEntryListener : CacheEntryCreatedListener, CacheEntryExpiredListener, Lo..
적용하게 된 계기 회사내에 프로젝트를 하다가 상품등록시에 상품마다 매번 Category, Brand 등의 테이블을 조회 해와서 유효성 검증을 하고 있었다. 이걸 개선해보고 싶어서 캐싱을 적용해 봤고 포스팅을 해보려고 한다. 캐시할 데이터 업데이트가 자주 일어나지 않고, 자주 조회하는 Category, Brand, Keyword를 캐시해서 사용하려고 한다. 캐시를 하면 매번 DB에서 조회하지 않고, 빠르고, 네트워크를 타지 않기 때문에(Local cache 한정) 효율적으로 가져올 수 있다고 생각했기 때문이다. Local cache VS Global cache 캐시는 크게 Local Cache와 Global Cache로 나눌 수 있는데, 그중 Local Cache를 적용하기로 했다. Local Cache..
문제 링크 https://www.acmicpc.net/problem/21923 21923번: 곡예 비행 동헌이는 모형 비행기 조종 대회에 참가하였다. 이 대회에서는 격자 모양의 공간에서 모형 비행기를 조종하여 얻는 비행 점수로 순위를 매긴다. 격자의 각 칸에는 점수가 부여되어 있고, 비행 www.acmicpc.net 문제 풀이 DP 문제이다. https://www.acmicpc.net/problem/1932 를 풀고 풀면 더 쉽게 풀 수 있을 것 같다. 1. DP를 통해서 올라가는 방향의 점수를 2차원 배열에 저장한다. 2. DP를 통해서 내려가는 방향의 점수를 2차원 배열에 저장한다. 3. 두 배열을 각 지점마다 더하고 MAX값을 비교해 출력한다. 풀고나면 생각보다 간단한 문제인 것 같다. 소스 코드 ..
문제 링크 https://www.acmicpc.net/problem/20055 20055번: 컨베이어 벨트 위의 로봇 길이가 N인 컨베이어 벨트가 있고, 길이가 2N인 벨트가 이 컨베이어 벨트를 위아래로 감싸며 돌고 있다. 벨트는 길이 1 간격으로 2N개의 칸으로 나뉘어져 있으며, 각 칸에는 아래 그림과 같이 1부 www.acmicpc.net 문제 풀이 시뮬레이션 문제이다. 시뮬레이션 문제는 요구하는 바를 정확히 이해하고, 중요한 조건을 캐치해서 그대로 구현해내기만 하면되는 문제이다. (근데 엄한데서 조건을 빼먹어서 한참 찾았다. ㅠㅠ) 소스 코드 import java.util.ArrayList; import java.util.LinkedList; import java.util.Queue; import ..
문제 링크 https://programmers.co.kr/learn/courses/30/lessons/42587 코딩테스트 연습 - 프린터 일반적인 프린터는 인쇄 요청이 들어온 순서대로 인쇄합니다. 그렇기 때문에 중요한 문서가 나중에 인쇄될 수 있습니다. 이런 문제를 보완하기 위해 중요도가 높은 문서를 먼저 인쇄하는 프린 programmers.co.kr 문제 풀이 이 문제는 분류부터 큐로 되어있고, 프린터 관련 문제들은 대부분 대표적인 큐 문제죠. 저희는 각 문서들의 중요도를 배열로 입력받아 원하는 문서가 몇 번째로 출력되는지를 구해야 하는데요. 저는 다음과 같은 순서로 풀었습니다. 1. 각 문서의 중요도와, 이 문서가 원하는 문서인지를 가지는 변수를 가진 static class를 만들어 큐에 순서대로 ..
- Total
- Today
- Yesterday
- vaild
- 카카오 인턴십
- 삼성 코테
- RGB거리
- for of
- 제네릭(Generic)
- 날짜 유효성
- 제네릭 타입
- 19236
- spring cache
- yyyy-MM-dd
- 오버로딩
- 삼각달팽이
- 가장 큰 수
- 39회차
- 반례
- 1629
- 커링
- local cache
- 카카오 코딩 테스트
- 삼성기출
- 프로그래머스
- 키패드 누르기
- 청소년상어
- javascript
- 문자열 압축
- java
- DP
- 01타일
- 백준
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |