[Spring/Spring Batch] 배치 처리와 Spring Batch란 무엇일까?
서론 및 배경 IT 기술이 발전하면서 한 번에 처리해야하는 데이터 양이 늘었고 이를 효율적이고 안정적으로 처리하기 위한 기술이 필요해졌다. 이를 ‘배치 처리’라고 표현한다. 다시 요약하면 ‘대량의 데이터를 일정 시간에 모아서 한꺼번에 처리한다.’는 의미이다. 보통 사용자의 활동 로그 정리, 정산, 데이터 마이그레이션, 정해진 시각에 특정 사용자에게 ...
서론 및 배경 IT 기술이 발전하면서 한 번에 처리해야하는 데이터 양이 늘었고 이를 효율적이고 안정적으로 처리하기 위한 기술이 필요해졌다. 이를 ‘배치 처리’라고 표현한다. 다시 요약하면 ‘대량의 데이터를 일정 시간에 모아서 한꺼번에 처리한다.’는 의미이다. 보통 사용자의 활동 로그 정리, 정산, 데이터 마이그레이션, 정해진 시각에 특정 사용자에게 ...
서론 Spring Security에서 Session과 JWT 방식을 통한 로그인을 구현했다. 이에 더 나아가서, Session 방식에 OAuth2 방식으로 카카오 플랫폼을 통한 로그인을 구현해 보고자 한다. OAuth란? OAuth는 Open Authorization의 줄임말로, 권한 인증을 외부 서비스 업체에 위임함으로써 안전하게 액세스 권한을...
서론 지난 포스트에서 Spring Security 프레임워크를 통해 Session 방식을 이용한 로그인 구현을 다뤄보았다. 이번 포스트에서는 JWT 방식으로 로그인을 구현해볼 것이며, Session 방식과 JWT 방식의 차이점을 알아본다. JWT란? JWT는 ‘JSON Web Token’의 줄임말로, 클라이언트와 서버 사이에 통신할 때 권한에 대...
서론 실제 프로젝트를 생성해서 Spring Security를 통해 로그인을 구현해본다. 그리고 Spring Security에서 인증(Authentication)과 인가(Authorization)이 어떻게 관리되어지는 지 공부해보고자한다. Spring Security란? Spring Security는 스프링 기반 어플리케이션에서 인증과 인가를 처리...
서론 DB Lock 포스팅에서 데이터베이스에서 동시성 처리를 위한 Lock에 대해 공부했다. 뿐만 아니라 공유 락, 배타 락과 같이 블로킹과 데드락이 발생할 수 있는 조건을 알 수 있었다. Spring Framework 개발 환경에서 어플리케이션 레벨에서의 Lock 기법과 데이터베이스 레벨에서의 Lock 기법, 그리고 Spring 내에서 지원하는 ...
서론 트랜잭션 격리 수준에서 각 트랜잭션끼리 서로 어떤 기준으로 격리되어야하는 지 알아보았다. 트랜잭션 격리 수준이란 여러 트랜잭션이 동시에 테이블, 레코드를 접근하지 못하도록 막는 규칙을 의미한다. 그렇다면 Lock은 무엇일까? 트랜잭션 격리 수준이라는 규칙을 구현할 수 있으며, 여러 커넥션에서 동시에 변경할 수 없도록 데이터를 잠금하는 기법...
서론 트랜잭션에 대한 개념과 특징, 상태에 대해 지난 포스팅에서 알아보았다. 트랜잭션의 특징 중 I에 해당하는 isolation(격리성)은 트랜잭션 수행 시에 서로 끼어들면 안된다는 것을 말한다. 데이터베이스는 여러 사용자가 같은 데이터에 접근할 수 있어야 한다. 순차적으로 접근할 수 있다면 쉽게 구현할 수 있겠지만 성능이 나쁠 것이다. 트랜잭션 ...
공부하게 된 배경 최근에 기술 면접에서 DB의 인덱스에 대한 질문을 받았는데 DB 조회 성능을 개선할 당시에 나는 현업에서 사용하지 않았었다. 면접관 분은 당연히 인덱스를 이용해보았을 거라고 생각하셨지만 인덱스에 대해 깊이 알고 있지 못했고 이미 100만 건 이상의 데이터가 있어서 인덱스를 새로 설정하는 데에 시간이 오래 걸릴 것이라 생각했다. 하지...
Spring의 AOP(관점 중심 프로그래밍)에서 프록시와 프록시 패턴이 사용되는데, 프록시와 프록시 패턴이라는 디자인 패턴에 대해 공부하기 위해 기록한다. 프록시란? 프록시(Proxy)를 번역하면, 대체자, 대리자, 위임과 같은 키워드가 등장한다. 그리고 대리자는 누군가의 일을 대신해서 수행하는 사람을 의미한다. 이 부분은 프로그램에서 프록시를 통...
트랜잭션이란? 트랜잭션은 데이터의 상태 변화에 대한 작업 단위라고 표현할 수 있다. 하지만 SQL문 한 줄이 트랜잭션이라고 보기에는 어렵다. 은행의 송금을 예시로 드는데 A가 B에게 30,000원을 보냈다면, A의 잔고가 30,000원이 넘는 지 확인하고, 그 뒤에 A의 잔고에는 -30,000의 update가 수행되어야하며, B의 잔고에는 +30,...