arrow_upward
본문 바로가기

전체 글28

[Spring Batch] Chunk 지향 처리 이전까지는 Step을 처리할 때 Tasklet으로 단일 작업을 처리했었다. 간단한 처리를 할 때는 Tasklet만 써도 상관없지만 대량의 데이터를 처리할 때 수십 수백만건의 데이터를 한 번에 처리하는 것은 그렇게 용이하지는 않다.이번에는 스프링 배치에서 데이터를 처리할 때 많은 이점을 제공하는 Chunk에 대해서 알아볼 것이다. 프로젝트 설정은 이전 포스팅과 동일하다.  Chunk란?스프링 배치는 일반적으로 Chunk 지향적인 처리 스타일을 사용한다. Chunk는 대량의 데이터를 효율적으로 처리할 수 있으며 데이터를 일정한 크기(청크)로 나누어 처리하는 것을 의미한다.  Chunk는 다음 요소들로 구성된다.ItemReader: 데이터를 읽어온다. (FILE, DB)ItemProcessor: 읽어온 데이터.. 2024. 7. 19.
[Spring Batch] 스프링 배치 메타데이터 스키마 확인 이전에 스프링 부트 2버전과 3버전에서 스프링 배치 프로그램을 간단하게 작성했는데, 이번에는 메타데이터 스키마(테이블)을 한번 확인해볼 것이다. 프로젝트 설정은 이전 포스팅 설정을 그대로 사용한다.  메타데이터 스키마(Meta-Data Schema)출처: Appendix B: Meta-Data Schema  스프링 배치는 Job과 Step의 실행 상태, 결과를 관리하기 위해서 메타데이터 스키마를 사용한다. 각 테이블은 배치 작업의 상태 정보를 저장하며, 표시된 테이블 외에도 키를 관리하기 위한 시퀀스 테이블들이 있다. JobRepository를 통해서 Job, Step의 실행 상태, 시간, 파라미터 정보 등을 저장하고 관리하게 된다. 각 테이블의 ID 값은 레코드를 식별하기 위한 PK(대체키)다.그리고 .. 2024. 7. 14.
[Spring Batch] 스프링 배치 개념 및 사용해보기 이제까지 배치 처리를 할 떄 Spring Boot에서 자바 자바 코드를 구현해서 리눅스의 cron 스케줄러를 사용해서 적용하기만 했었다.이번에 스프링 배치를 사용한 배치 처리를 해보면서 스프링 배치가 제공하는 이점들을 살펴볼 것이다.  배치란?배치는 일반적으로 "배치 처리(Batch Processing)"을 의미하며, 대량의 데이터를 일정한 시간에 일괄적으로 처리하는 것을 말한다.주로 대량의 데이터를 처리하는 작업이기 때문에 트래픽이 적은 새벽 시간에 작업 스케줄러(cron 등)를 사용해서 주기적인 배치 작업을 실행한다.여러 작업을 개별적으로 처리하는 것보다, 대량의 데이터를 처리함으로써 시스템 리소스를 효율적으로 사용할 수 있다.  스프링 배치(Spring Batch)란?스프링 배치는 대량의 데이터를 .. 2024. 7. 14.
Spring MVC 동작 구조 및 순서 Spring MVC의 동작 방식을 포스팅하려고 한다. WAS의 서블릿 컨테이너의 기능에 대해서는 간략하게 설명할 것이다.Spring MVC(Spring Web MVC)는 스프링 프레임워크의 일부로 모델-뷰-컨트롤러 아키텍처를 구현한다. Spring MVC는 DispatcherServlet을 중심으로 동작이 설계되고 DispatcherServlet은 동작을 앞단에서 제어한다고 해서 FrontController라고도 한다.Spring MVC 구조다음은 Spring MVC의 구조로 컨트롤러 이후의 비즈니스 로직과 DB 로직은 제외했다.Spring MVC는 웹 요청을 실제로 처리하는 객체를 핸들러라고 한다. 이는 웹 요청은 보편적으로 사용되는 @Controller 외에도 직접 만든 클래스를 이용해서 클라이언트의.. 2024. 5. 6.
[PostgreSQL] MyBatis에서 Returning 사용법 PostgreSQL은 Returning이라는 기능으로 DML처리 시 변경되는 컬럼의 값을 리턴받을 수 있다. INSERT INTO post (title, content) VALUES ('Returning', 'PK값을 리턴받을 수 있다.')RETURNING post_id;-- 결과post_id--------9 이 기능을 통해서 MyBatis의 태그를 대체해서 사용할 수 있다.MySQL에서 사용했던 방법과 PostgreSQL의 사용방법을 비교하여 확인해본다.MyBatis 에서 사용하기비즈니스 로직을 처리할 때 부모테이블이나 Insert 되는 테이블의 auto_increment되는 테이블의 PK 값을 알아야 할 필요가 있어서 MyBatis의 SelectKey 기능을 사용한다.PostgreSQL은 Select.. 2024. 5. 3.
[Apache] 아파치 서버 SSL, 리버스 프록시 설정 이전에 프로젝트를 진행 당시 클라이언트 사이드는 리액트로 구성했었고 서버는 FastAPI로 구성했을 때 클라이언트와 서버간 통신에서 자바스크립트의 Fetch API는 기본적으로 Same-Origin 정책을 따르기 때문에 CORS문제를 해결해야 했다.서버의 CORS설정으로 포트를 허용하는 방법도 있지만 동일한 출처(Origin)이 아닐 때 포트를 허용하는 것이 보안상으로 좋지 않기때문에 리버스 프록시를 한번 설정해보기로 했었다.이 때 작업을 하면서 아파치 서버에 SSL, 리버스 프록시를 설정했던 것을 기록하려 한다.아파치 서버 설정우선 리눅스는 우분투 서버를 기준으로 설명할 것이다.우분투에서 아파치 서버를 설치하려면 apache2를 설치해주면 된다.# apache2 패키지 설치sudo apt install.. 2024. 4. 26.