Spring

💡 김영한님의 스프링 핵심 원리 고급편 강의를 듣고 정리한 내용입니다.Overview이번에는 동일한 문제를 전략 패턴을 사용해서 해결해보자.@Slf4jpublic class ContextV1Test { @Test void templateMethodV0() { logic1(); logic2(); } private void logic1() { long startTime = System.currentTimeMillis(); // 비즈니스 로직 실행 log.info("비즈니스 로직1 실행"); // 비즈니스 로직 종료 long endTime = System.currentTimeMillis(); ..
💡 김영한님의 스프링 핵심 원리 고급편 강의를 듣고 정리한 내용입니다.Overview로그 추적기 도입 전과 도입 후의 코드를 비교해보자. 로그 추적기 도입 전 - V0 코드// OrderControllerV0 코드 @GetMapping("/v0/request")public String request(String itemId) { orderService.orderItem(itemId); return "ok";}// OrderServiceV0 코드public void orderItem(String itemId) { orderRepository.save(itemId);}로그 추적기 도입 후 - V3 코드//OrderControllerV3 코드 @GetMapping("/v3/request")public Str..
·Spring/락
💡 최상용님의 재고시스템으로 알아보는 동시성이슈 해결방법 강의를 듣고 정리한 내용입니다.배경지난 동시성이슈 해결방법 (2/3) - 데이터베이스 락(Lock)으로 해결하기에 이어 이번에는 레디스(Redis)를 활용하여 동시성 문제를 해결해 본다. 동시성 문제를 해결하기 위해서 레디스에서는 대표적으로 Lettuce와 Redisson을 활용한다. (레디스에 대한 설명은 이번 글에서는 생략한다.) 동시성을 제어하기 위해선 DataBase 또는 Redis에서 제공하는 Lock를 활용하여 데이터의 동시성 접근을 제어하는 방법을 이용해야 한다. DataBase Lock를 이용할 경우 추가적인 인프라 구성요소 없이 동시성을 해결할 수 있다는 장점이 있으나 Lock 획득을 위해 Waiting되는 DataBase Con..
·Spring/락
💡 최상용님의 재고시스템으로 알아보는 동시성이슈 해결방법 강의를 듣고 정리한 내용입니다.배경지난 동시성이슈 해결방법 (1/3) - 동시성 이슈와 Application Level로 해결하기 글에서 멀티 스레드 환경에서 개발할 때 발생할 수 있는 경합 상태(Race condition)를 비롯한 동시성 이슈를 알아보았다. 이를 해결하기 위해서는 공유 데이터에 접근할 때 한 번에 한 스레드만 접근하고 작업할 수 있도록 제어를 해야 한다는 사실을 알았고 자바의 synchronized 키워드를 먼저 적용하여 해결하였다. 하지만 자바의 synchronized 키워드는 한 프로세스 내에서만 스레드 안전성을 제공하며 스프링의 @Transactional 어노테이션과 함께 사용하기에 한계가 있었다. 결국 동시성 이슈를 해..
an_jjin
'Spring' 카테고리의 글 목록 (4 Page)