개요커머스 개발을 하다가 결제 부분에서 따닥 이슈를 만나서 해결하는 과정을 적어본다.😱 문제멤버십 구독을 할 때 유저가 n 번 누르면 요청이 n 번 들어와서 결제가 n번 된다.🤔 해결 방안1. 요청 시 클라이언트 헤더에 멱등 키를 받아서 여러 요청이 하나의 요청인지 아닌지 구분한다. (execute at most once)멱등 키는 서버에서 해당 구독 건에 대해 특정할 수 있는 key를 조합하여 사용하는 것으로 한다.멱등 키는 헤더에 설정. (IETF 표준)결제 요청 전에 DB에서 멱등 키를 확인하여 이미 저장이 되어 있으면 중복 요청으로 208 Already Reported 응답멱등 키와 요청한 endpoint 로 구별어디에 저장하지DB멱등 키 확인/생성하는 로직을 트랜잭션을 분리시켜서 구현한 다음..
보호되어 있는 글입니다.

웹 서버란? 웹 서버는 데이터를 transfer 하기 위해 HTTP 프로토콜을 사용한다. 간단한 상황에서, 유저가 브라우저에 URL을 입력하면 서버가 클라이언트에게 웹 페이지를 보낸다. Servlet Container 란? 웹 서버는 정적 컨텐츠만을 반환해준다. 그러나 더 나아가서 서버 측에서 동적으로 페이지 혹은 데이터를 주기 위해 자바를 사용한 것이 servlet container이다. 웹서버와는 소켓을 만들어 통신한다. Servlet은? javax.servlet 패키지에 정의된 인터페이스이다. 서블릿의 생명 주기는 init(), service(), destroy() 로 이뤄진다. 모든 서블릿에서 실행되고, 서버에 의해 특정 시간에 실행이 시작된다. init() 서블릿 생명주기의 초기화 단계에서 불린..
env_insert.sh 를 실행하다가 발생한 오류. 환경 변수를 확인하자! java.util.concurrent.ExecutionException: java.net.ConnectException: No route to host at com.ning.http.client.providers.netty.future.NettyResponseFuture.abort(NettyResponseFuture.java:231) at com.ning.http.client.providers.netty.request.NettyConnectListener.onFutureFailure(NettyConnectListener.java:137) at com.ning.http.client.providers.netty.request.Net..
1. timezone 변경에 따른 종일 일정 표시iCal은 캘린더를 표기하는 형식인데 정해진 표준은 딱히 없다. 따라서 벤더마다 사용하고 싶은 속성을 사용해 일정이나 timezone, 캘린더 정보를 표기한다.외부 파일 혹은 URL 공유를 하려면 이 iCal형식에 맞춘 .ics 파일로 주고받게 되는데 현재 회사에서 내가 개발하고 있는 캘린더는 날짜를 timestamp with timzone 타입이라서 timezone에 민감하다. 그래서 미루고 있던 종일 일정을 다른 timezone에서 조회하면 어떻게 보여야 하는지를 조사하고 수정하였다.구글에서만 실험해보긴 했지만 구글이 거의 표준이니까 이거만 따라도 되지 않을까 생각했다.일단 한국 시간이 GMT+9이니까 이거보다 더 플러스되는 시간을 가진 타임존으로 Pa..
CPU LoadCPU가 얼마나 많은 작업(프로세스)를 하고 있는지 파악하게 해주는 지표. 작업 중이거나 대기 중인 프로세스가 있는지 100 번 확인했는데 2개가 진행 중이라면 CPU Load는 0.02이다.남아 있는 작업까지 알려준다코어 하나 당 임계값은 0.7이다. 평균값이기 때문이다. "Average CPU Load" should be the average value throughout the run so far and "CPU Usage" is likely the current/instantaneous value. CPU Usage와 CPU Load는 혼용되어 사용되지만 자세히 알아보면 Load에는 대기중인 작업도 포함되어 있다.CPU Usage [%] = Busy Time / Total Time..
- Total
- Today
- Yesterday
- 이펙티브자바
- querydsl
- ruby
- Encoding
- 코테 log
- annotation
- TroubleShooting
- 이벤트스토밍
- ASCII
- DesignSystem
- Generic
- WebClient
- 암호화
- aws
- fetchResults
- IntelliJ
- point
- Lombok
- 메모리 릭
- ActiveAdmin
- Git
- Spring-Boot
- sort algorithm
- gitignore
- 실용주의
- SHA
- SQL 전문가 가이드
- Java
- 사고..
- effective-java
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |