분류 전체보기 9

Real Mysql 8.0 - Part 1. MYSQL Architecture

Intro 배치성 업무 특성상 로직이 쿼리에 있는 경우가 대부분이고, 복잡한 쿼리로직이 많음에 따라 orm보다는 raw query를 다루게 된다. 뿐만 아니라 운영 과정에서 DB 관련된 timeout 이나 세션 사용문제 등으로 문제가 생김에 따라 자바나 스프링 이상으로 DB에 대한 숙련도가 필요하다고 느꼈고, 사용 스택인 Mysql 의 바이블 책이라고 불리우는 Real Mysql 8.0을 다시 읽게 되었다. 물론 인덱스나 파티셔닝 등 실제상황의 문제들을 해결하기 위한 직접적인 주제들도 중요하지만, 이전에 큰 그림을 먼저 잡고 가고자 본 주제를 다루었다. 본 포스팅은 Real MYSQL 8.0 책의 4장 내용을 다룹니다. MYSQL Architecture MYSQL은 여타 RDBMS처럼 다양한 프로그래밍 ..

카테고리 없음 2022.09.05

Java 비동기 처리 (2) - CompletableFuture 사용해보기

0. Intro 지난 시간에 Future 를 활용한 스프링/자바 에서의 비동기 처리에 대해 알아보았다. Java 비동기 처리 (1) 기본편 Contents 0. Intro 1. 비동기란 2. 자바 비동기 구성요소 2.1 Future 2.2 ExecutorService & Executors 3. 스프링을 사용한다면? 3.1 @EnableSync 3.2 Executor Configuration 3.3 @Async 3.3.1 주의할 점.. fearless-nyang.tistory.com 당시 Future 를 사용하여 비동기 처리에 대한 기본을 훑어봤는데, 비동기 처리의 정수는 CompletableFuture 에 있다고해도 과언이 아니라고 생각해서..! 아쉬워 이번 포스팅에서 다뤄보려 한다. 사실상 자바 비동기..

Backend/Java 2022.06.26

Java 비동기 처리 (1) 기본편

Contents 0. Intro 1. 비동기란 2. 자바 비동기 구성요소 2.1 Future 2.2 ExecutorService & Executors 3. 스프링을 사용한다면? 3.1 @EnableSync 3.2 Executor Configuration 3.3 @Async 3.3.1 주의할 점 0. Intro 개인적으로 '비동기'는 그동안 내가 상당히 압도되고 깊게 공부하기 부담스러웠던 주제였다. 왜 그랬을까 생각해보면 아래와 같이 요약해볼 수 있을 거 같다. 비동기를 공부하려고 하면 맞닥뜨리는 현상 1. 비동기 컨셉 근본 글들이 대부분 Javascript 로 이야기한다. 2. 자바로 공부하는 순간 쏟아져나오는 개념... 심지어 자바를 잘 알아야 할거 같은 너낌 Future (미래?), Executor,..

Backend/Java 2022.05.23

java.util.concurrent.Future 가이드

해당 글은 https://www.baeldung.com/java-future 를 번역한 글입니다. 1. 개요 이 튜토리얼에서는 Future에 대해 알아보고자 한다. 자바 1.5부터 생긴 인터페이스로, 비동기 호출과 병렬 처리 하는데 꽤나 유용하다. 2. Future 만들기 간단히 말하자면, Future 클래스는 미래에 나오는 비동기 연산 결과를 나타내는 클래스다. 이 결과는 처리가 완료되면 Future 에 최종적으로 나올 것이다. 그럼 Future 객체를 만들고 반환하는 메소드를 어떻게 작성하면 될까? 오래 도는 메소드는 기다리는 동안 다른 프로세스를 실행할 수 있다는 점에서 비동기로 처리하기에 좋은 후보다. Future의 비동기 특성을 사용 하기에 적합한 작업은 다음과 같다. 수학적, 과학적 계산 등의..

스프링 이벤트

이 글은 https://www.baeldung.com/spring-events 를 번역한 글입니다. 1. 개요 이 튜토리얼에서는 스프링에서 어떻게 이벤트를 사용하는지에 대해 다루고자 한다. 이벤트는 프레임워크에서 가장 간과되는 기능 중 하나이면서, 동시에 가장 유용한 기능 중 하나이다. 그리고 이벤트 발행은 다른 스프링의 기능들처럼 ApplicationContext로부터 제공되는 특징 중 하나이다. 이벤트 사용을 위해서는 기본적으로 아래의 내용을 따라야 한다. Spring 4.2 이전 버전일 경우, 이벤트 클래스는 ApplicationEvent 를 상속받아야 한다. 4.2 버전부터는 더 이상 상속받을 필요가 없다. publisher (이벤트 발행자)는 ApplicationEventPublisher 객체를..

@Async 로 스프링 비동기 처리

해당 글은 https://www.baeldung.com/spring-async 를 번역하여 제작하였습니다. 1. Overview 이 튜토리얼에서는 스프링이 비동기 실행을 어떻게 지원하는지를 @Async 어노테이션과 함께 알아볼 것이다. 간단히 말해, 빈에 @Async 어노테이션을 달기만 하면, 해당 어노테이션이 다른 스레드에서 실행될 수 있도록 해줄 것이다. 즉, 함수를 호출하는 상황에서 호출하는 쪽이 호출되는 쪽을 기다릴 필요가 없어진다. 한가지 스프링의 흥미로운 점은 프레임워크 단에서의 이벤트 지원이 필요시 비동기 처리 또한 지원한다는 것이다. 이후 읽어볼 만한 글: Spring Events Spring Security Context Propagation with @Async Servlet 3 Asy..

스프링 Task Scheduler 가이드

본 글은 해당 링크의 문서를 번역한 글입니다. https://www.baeldung.com/spring-task-scheduler Task Scheduler 1. Overview 이 글에서, 우리는 스프링의 Task 스케줄링 동작방식에 대해 이야기해보려 한다. 이를 테면, TaskScheduler 및 서로 다른 trigger와 함께 구현된 이전의 구현들. 만약 Spring에서의 scheduling 에 대해 더 읽어보고 싶다면, @Async and @Scheduled 글도 참고하길 바란다. TaskScheduler는 future에서 돌릴 수 있는 여러 메소드와 함께 Spring 3.0부터 도입되었다. 이는 또한 스케줄에 등록된 task를 취소하거나 끝났는지 여부 등을 확인하는데 사용될 수 있는 Schedu..

Test Double

테스트 더블이란. 테스트의 대상이 의존하는 컴포넌트를 원하는 형태로 동작하는 것처럼 테스트할 수 있도록 하는 방법 액션영화에서 위험한 촬영이 있을 때 스턴트맨이 실제 배우를 대신해 촬영을 진행하곤 한다. 이런 스턴트맨을 외국에서는 '스턴트 더블 (Stunt Double)' 이라 부르는데, 테스트 더블은 테스팅 과정을 촬영에 비유했을 때 비로소 그 의미를 쉽게 유추해볼 수 있다. 테스트 더블(스턴트 더블)이란 실제 객체(배우)로 테스트(촬영)을 진행하기 어려운 경우 대신 진행해주는 방법 및 구성하는 요소들로 정의할 수 있다. 여기서 테스트를 진행하기 어려운 상황이 무엇일까? 단적으로 API를 호출해 데이터를 받아와서 로직을 수행하는 경우, 테스트는 네트워크 연결, 호출하고자 하는 API를 제공하는 서버 상..

Backend/Test 2022.04.24