![thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fw85Gt%2FbtsmO48gFTz%2FU9raJ4DVph7iEOur34jw71%2Fimg.png)
[Spring Boot] Spring Batch Partitioning을 통해 Step을 분리해보자
2023. 7. 8. 14:21
Java/Spring Boot
Spring Batch 애플리케이션을 작업하다보면 이 애플리케이션이 처리해야하는 데이터가 많아졌을 때 다음과 같은 고민을 어떻게 해결할 수 있을지 궁금했습니다. 기존 코드 변경을 최소화하며 단일 서버의 처리량을 최대한 높이는 방법이 없을까? 동시성을 최소한으로 신경쓰고 처리량을 높일수는 없을까? 위 궁금증을 해소할 수 있는 방법을 찾던 중 spring batch의 partitioning 기능이 있다는 것을 알게됐습니다. 이번 포스팅에서는 위 궁금증을 spring batch에서 어떻게 해소해주는지 살펴보겠습니다. 코드는 아래 링크에서 확인해주세요. Main 브랜치에 partitioning을 적용하고 no-partitioning 브랜치는 일반적인 batch를 구현하였습니다. GitHub - seonwoo96..
![thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FUOsiv%2FbtrTf7mjXY1%2FnK3ZYNzdtTvltVaiIkIisk%2Fimg.png)
[Database] DBA급 개발자로 - #21 Distributed Database 1/3
2022. 12. 9. 22:38
Database/DBA급 개발자로
이전 포스팅에서 로깅을 활용해서 시스템 장애 시 데이터베이스를 어떻게 복구하는지 살펴봤습니다. 이번 포스팅에서는 분산 데이터베이스에 대해 살펴보겠습니다. Distributed Database 데이터베이스 노드가 네트워크로 연결돼서 데이터베이스 기능을 제공하는 형태를 분산 데이터베이스라고 합니다. 노드 간 통신이 네트워크를 통해 이뤄지므로 통신 비용을 고려해야 합니다. System Architecture 분산 데이터베이스는 다음과 같이 구성할 수 있습니다. 하나씩 살펴보겠습니다. Shared Memory 데이터베이스 노드가 네트워크를 통해 하나의 메모리를 공유하는 형태입니다. 데이터베이스 노드는 하나의 메모리에 적재된 데이터를 공유합니다. Shared Disk 네트워크를 통해 디스크를 공유하는 형태입니다...
![thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FyRUSQ%2FbtrLVXJsf22%2Flz9AbPTlnAI60NzkFyXvE1%2Fimg.png)
[Database] DBA급 개발자로 - #12 Query Processing 2/2
2022. 9. 13. 12:10
Database/DBA급 개발자로
이전 포스팅에서 DBMS가 쿼리를 어떻게 처리하는지 살펴봤습니다. 이번 포스팅에서는 쿼리의 병렬 처리 방법에 대해 살펴보겠습니다. Process Model 쿼리를 병렬로 처리할 수 있는 process model에 대해 살펴보겠습니다. 쿼리 요청을 처리하는 DBMS 내부의 컴포넌트를 worker라고 합니다. Process per DBMS Worker 각각의 worker는 독립된 프로세스 위에서 동작합니다. 운영체제 스케쥴러에 의해 작업이 할당되고 데이터를 공유할 때 shared memory를 활용합니다. 독립된 프로세스 위에서 동작하므로 하나의 worker에 에러가 발생하더라도 전체 시스템이 다운되지 않습니다. Process Pool 프로세스를 미리 만들어서 pool에 보관하고 요청이 발생하면 사용 가능한..