[CDC 프로젝트] Skip한 Active Transaction Data 후처리
·
Daily
이전 포스팅에서는 기존 로그 데이터를 가져올 때 활성화 상태인 트랜잭션에 대해서는 제외하고 로그 데이터를 가져왔었습니다. 하지만 이렇게 활성화 상태인 트랜잭션의 데이터들이 후에 완료되고 난 후면, 결국 해당 데이터도 분명히 반영시켜줘야 합니다. 이번 포스팅에서는 해당 문제에 대해서 이해해 보고, 해결하는 방법에 대해서 다뤄보겠습니다. 활성화 상태의 트랜잭션을 제외한 로그 데이터를 수집하는 내용은 아래 포스팅에 있으니 참고하시기 바랍니다.https://hyunily.tistory.com/46 [CDC 프로젝트] Uncommitted DML 로그 기록 최적화 방안이전 포스팅에서 Oracle에서 로그 데이터를 조회하는 방법부터 실제 Spring Batch에서 불러오는 방법까지의 과정에 대해서 다뤘었습니다. 이..
[CDC 프로젝트] Offset을 활용한 로그 읽기
·
Daily
이번 포스팅에서는 로그를 읽어오는 과정에서 발생할 수 있는 여러 문제 중 하나인 트랜잭션 단위 문제에 대해서 다뤘었습니다. 이전 포스팅은 아래 글을 참고해 주시기 바랍니다.https://hyunily.tistory.com/46 [CDC 프로젝트] Uncommitted DML 로그 기록 최적화 방안이전 포스팅에서 Oracle에서 로그 데이터를 조회하는 방법부터 실제 Spring Batch에서 불러오는 방법까지의 과정에 대해서 다뤘었습니다. 이전 포스팅은 아래 글을 참고해 주시기 바랍니다.https://hyuhyunily.tistory.com 이번 포스팅에서는 Offset 관리에 대해서 다뤄보려고 합니다. Offset이란?Offset은 다양한 분야에서 사용되는 개념입니다. 특히, DB 쿼리, 배치 처리, 웹..
[CDC 프로젝트] Uncommitted DML 로그 기록 최적화 방안
·
Daily
이전 포스팅에서 Oracle에서 로그 데이터를 조회하는 방법부터 실제 Spring Batch에서 불러오는 방법까지의 과정에 대해서 다뤘었습니다. 이전 포스팅은 아래 글을 참고해 주시기 바랍니다.https://hyunily.tistory.com/44 [CDC 프로젝트] Oracle DB to MySQL(1)이전 포스팅에서 다뤘던 CDC에 있어 규모를 조금 줄여 직접 CDC를 진행해보려고 합니다. CDC 기본적인 개념에 대해서 궁금하신 분들은 아래 포스팅을 참고하시기 바랍니다.https://hyunily.tistory.com/41hyunily.tistory.com 해당  과정에서 사용했던 로그 데이터를 읽어오는 쿼리문은 다음과 같았습니다.SELECT OPERATION, SEG_OWNER, TABLE_NAME..
[CDC 프로젝트] Oracle DB to MySQL(1)
·
Daily
이전 포스팅에서 다뤘던 CDC에 있어 규모를 조금 줄여 직접 CDC를 진행해보려고 합니다. CDC 기본적인 개념에 대해서 궁금하신 분들은 아래 포스팅을 참고하시기 바랍니다.https://hyunily.tistory.com/41 CDC(Change Data Capture)란?CDC란?CDC(Change Data Capture)란 데이터베이스에 발생하는 변경사항(INSERT, UPDATE, DELETE 등) 실시간/준실시간으로 데이터를 추적하고 캡처하는 기술을 말합니다. CDC는 보통 기존 source 데이터베이스에서hyunily.tistory.com요구사항이번 프로젝트에서 요구사항은 다음과 같습니다.1. Oracle DB로부터 변경된 데이터를 읽는다.2. 읽어온 데이터에서 적절한 정보만 가공한다.2. 가공..
Scanner vs BufferedReader
·
Daily
코딩테스트를 준비하시는 분들이라면 Scanner와 BufferedReader의 차이점에 대해서 궁금해하시는 분들이 계실 거라고 생각합니다. 오늘은 이 둘의 차이점과 속도차이가 왜 생겨나는지에 대해서 알아보겠습니다.본론부터 말하자면 속도측면에서 더 우세한건 BufferedReader입니다.  입력 데이터가 그렇게 크지 않으면 그림과 같은 차이점을 보이겠지만, 입력 데이터가 커지면 커질수록 그 차이는 더 심해지게 됩니다. 더 자세하게 두 방식의 동작 원리를 통해 좀 더 살펴보겠습니다.Scannerpublic class Main { public static void main(String[] args){ Scanner sc = new Scanner(System.in); int nu..
CDC(Change Data Capture)란?
·
Daily
CDC란?CDC(Change Data Capture)란 데이터베이스에 발생하는 변경사항(INSERT, UPDATE, DELETE 등) 실시간/준실시간으로 데이터를 추적하고 캡처하는 기술을 말합니다. CDC는 보통 기존 source 데이터베이스에서 target 데이터베이스로 데이터를 동기화할 때 주로 사용되는데요. 전체 데이터가 아닌, 변경된 데이터만 처리하여 네트워크와 데이터베이스 성능을 최적화 시킵니다.그리고 데이터 복제 및 업데이트 작업을 자동화하여 데이터 관리 비용과 시간을 절감시키기도 하여, 데이터 동기화 하는 목적에 주로 사용되는 기술입니다. CDC의 장점CDC를 사용했을 때와, 사용하지 않았을 때의 차이점은 다음과 같습니다. 사용 전사용 후데이터 일관성유지유지데이터 스캔풀 데이터 스캔변경 데이..
모놀리식 프로젝트 DDD 패턴으로 전환하기
·
Daily
기존 프로젝트는 모놀리식 아키텍처로 설계되었습니다.이를 고도화하는 과정에서 도메인 주도 설계(DDD)로 전환하는 과정도 필요로 했었습니다.이번 포스팅은 간단하게 DDD 패턴으로 전환하는 과정에 대해서 다뤄보겠습니다.기존 모놀리식 아키텍처의 문제점모놀리식 아키텍처에서는 애플리케이션이 단일 코드 베이스로 구축되며, 모든 기능이 서로 긴밀하게 연결되어 있습니다.작은 애플리케이션에서는 물론 효율적인 방법일 수 있지만, 프로젝트에 여러 기능을 추가하며 커지면 다음과 같은 문제점이 발생할 수 있습니다. 1. 높은 결합도구성 요소들이 서로 강하게 연결되어 있어, 하나의 부분을 수정할 때 다른 부분도 함께 수정해야 하는 경우가 존재 2. 확장성 부족개별 기능을 독립적으로 확장하기 어려움 3. 테스트 어려움각 유닛이 여..
무중단 배포란?
·
Daily
프로젝트를 배포하는 여러 방법이 있습니다.하지만 보통 사용자들이 사용하는 서비스들은 무중단 배포를 하는 곳이 많다는 것도 사실입니다. 오늘은 무중단 배포에 대해서 알아보겠습니다.무중단 배포무중단 배포는 애플리케이션을 업데이트하거나 새로운 버전을 배포할 때, 서비스 중단 없이 연속적으로 시스템을 운영하는 배포 방식을 말합니다. 1. 블루-그린 배포 - 블루-그린 배포는 두 개의 환경(블루, 그린)을 설정하여 배포하는 방식입니다.1) 블루 : 현재 애플리케이션이 실행되고 있는 기존의 환경2) 그린 : 새로운 버전의 애플리케이션을 배포하는 환경 - 새로운 버전이 그린 환경에 배포되고, 테스트를 완료하면, 로드 밸런서를 통해 트래픽을 블루에서 그린 환경으로 전환합니다.- 문제가 발생할 경우, 다시 블루 환경으로..