Java 환경에서 AES를 사용한 암호화 사용 정리
·
Java
DB 칼럼 암호화를 위한 AES 대칭키 암호화 방법최근 개인정보 보호 및 데이터 보안의 중요성이 커지면서, 데이터베이스 내 민감한 정보를 암호화하는 요구사항이 증가하고 있습니다. 본 포스트에서는 AES (Advanced Encryption Standard) 를 활용하여 DB 칼럼을 암호화하는 방법과 그 구현 예제를 소개합니다.1. AES란?AES는 미국 정부에서 채택한 표준 대칭키 암호화 알고리즘입니다.대칭키 암호화: 암호화와 복호화에 동일한 키를 사용합니다.키 사이즈: AES는 128, 192, 256비트 키를 지원하며, 키 길이가 길수록 brute force 공격에 대한 방어력이 향상됩니다.자세한 내용은 Wikipedia의 AES 문서 를 참고하세요.2. AES의 구성 요소AES 암호화를 구현하기 위..
MySQL 데이터 복구하기
·
카테고리 없음
데이터 복구 과정에서 학습한 내용 기록이번에 회사에서 AWS RDS로 DB 서버를 단계적으로 이전하는 과정에서 프로덕션 데이터가 소실되는 상황이 발생하였습니다. 다행히 바이너리 로그(binlog)를 보관하는 기간 내에 있어서 MySQL binlog를 활용하여 데이터를 복구할 수 있었습니다. 이때 학습한 내용을 기록 차원에서 남깁니다.데이터 복구 과정프로덕션 서버에서 binlog 확인SHOW BINARY LOGS;결과는 다음과 같았습니다:+---------------+-----------+ | Log_name | File_size | +---------------+-----------+ | binlog.000015 | 724935 | | binlog.000016 | 733481 | +------------..
MySQL Index 정리 및 팁
·
Database/My SQL
MySQL Index 정리 및 팁MySQL의 인덱스란 무엇인가?인덱스는 MySQL에서 데이터베이스 테이블의 데이터 검색 속도를 향상시키는 자료구조입니다. 책의 색인과 유사하게, 데이터베이스 인덱스는 전체 테이블을 스캔하지 않고도 데이터베이스 엔진이 특정 행을 빠르게 찾을 수 있게 해줍니다.MySQL은 주로 정렬된 구조로 데이터를 저장하여 효율적인 검색, 삽입, 삭제 작업을 가능하게 하는 B-Tree 인덱스를 사용합니다.B-Tree 인덱스 구조B-Tree(Balanced Tree) 인덱스는 다음과 같은 주요 특징을 가집니다:루트 노드: 브랜치 노드를 가리키는 트리의 최상위 레벨브랜치 노드: 키와 자식 노드에 대한 포인터를 포함하는 중간 레벨리프 노드: 인덱스된 값과 행 포인터를 포함하는 최하위 레벨균형 구..
카프카 Exactly Once Delivery 구현
·
Messaging Queue/Kafka
Kafka에서의 Exactly Once Delivery 구현메시지 시스템을 사용하다 보면 메시지의 전달 보장 방식에 대해 고려해야 합니다. 일반적으로 다음 세 가지 전달 방식이 있습니다.At Least Once Delivery: 메시지가 최소 한 번 전달됩니다. 중복 메시지가 발생할 수 있습니다.At Most Once Delivery: 메시지가 최대 한 번 전달됩니다. 메시지가 손실될 수 있습니다.Exactly Once Delivery: 메시지가 정확히 한 번 전달됩니다. 중복이나 손실이 없습니다.Kafka를 사용할 때, 메시지의 정확한 전달을 보장하는 것은 중요한 이슈입니다. 특히 Consumer 측에서 메시지를 처리하는 과정에서 중복이나 손실 없이 메시지를 정확히 한 번씩 처리하도록 구현하는 방법을 ..
스프링의 트랜잭션 처리
·
Java/Spring
이미 현업에서 자주 사용하지만 따로 정리하지는 않아서 이번 기회에 공식 레퍼런스를 보며 내용을 정리해보았다.스프링 트랜잭션 처리스프링 공식 문서: 트랜잭션 관리@Transactional 애노테이션은 인터페이스, 클래스, 또는 메서드에 트랜잭션의 의미를 부여하는 메타데이터이다. 예를 들어, "이 메서드가 호출될 때 새로운 읽기 전용 트랜잭션을 시작하고, 기존 트랜잭션은 일시 중지한다"는 의미를 가진다. @Transactional의 기본 설정은 다음과 같다:전파(Propagation): PROPAGATION_REQUIRED격리 수준(Isolation Level): ISOLATION_DEFAULT읽기-쓰기(Read-Write) 모드: 트랜잭션은 기본적으로 읽기-쓰기 모드이다.타임아웃(Timeout): 트랜잭션..