2025/03 54

[Real MySQL] 7-1. 데이터 암호화: MySQL 서버

백은빈, 이성욱 님의 "Real MySQL" 책을 정리한 포스팅 입니다.1. MySQL 서버의 데이터 암호화TDE스토리지 엔진의 I/O 레이어와 디스크 사이에서 암호화/복호화 수행즉, 데이터 파일이 디스크에 저장될 떄 암호화되고 읽을 떄 복호화됨MySQL 서버에서는 테이블의 데이터가 암호화되있는지 여부를 파악할 필요 없음 2단계 키 관리master key데이터베이스 전체의 키를 관리하는 최상위 키 (데이터를 암호화는 것이 아니라, tablespace key를 암호화)파일에 의해 관리되므로 보안상 주기적으로 변경해야 함키 변경) ALTER INSTANCE ROTATE INNODB MASTER KEY; tablespace key (private key)각 테이블마다 개별적으로 존재하는 키마스터 키에 의해 암..

Database/Mysql 2025.03.09

[Real MySQL] 6. 데이터 압축

백은빈, 이성욱 님의 "Real MySQL" 책을 정리한 포스팅 입니다. 1. 페이지 압축디스크에 저장하는 시점에 페이지가 압축되어 저장됨디스크에서 페이지를 읽어올 때 압축이 해제됨 압축 크기한 페이지가 어느 정도로 압축될지는 모름단, 특정 테이블의 페이지 크기는 모두 동일함 펀치홀운영체제의 파일 압축 기능MySQL에서는 16KB를 유지하면서 압축 후, 남은 공간은 운영체제에 반납하여 공간을 절약함 (실제로는 압축된 페이지만 사용)여러 문제점으로 인해 잘 사용되지 않음 문제점운영체제 뿐만 아니라, 하드웨어 자체에서도 지원해야 함파일 시스템 관련 명령어가 펀지 홀을 지원하지 못함 (복구하는 과정에서 남은 공간까지 가져올 수 있음) 설정CREATE TABLE t1 (c1 INT) COMPRESSION="zl..

Database/Mysql 2025.03.08

[단위 테스트] 9. 목 처리에 대한 모범 사례

블라디미르 코리코프 님의 "단위 테스트" 책을 정리한 포스팅입니다.목에 대해 리팩터링 내성과 회귀 방지를 최대화해서 최대 가치의 통합 테스트 개발하기 1. 목의 가치를 극대화하기예제더보기public class UserController { private final Database database; private final EventDispatcher eventDispatcher; public UserController(Database database, IMessageBus messageBus, IDomainLogger domainLogger) { this.database = database; this.eventDispatcher = new EventDispatch..

Code/Test 2025.03.01

[단위 테스트] 8-2. 통합 테스트를 하는 이유: 인터페이스

블라디미르 코리코프 님의 "단위 테스트" 책을 정리한 포스팅입니다. 4. 의존성 추상화를 위한 인터페이스 사용인터페이스와 느슨한 결합인터페이스 사용의 잘못된 인식프로세스 외부 의존성을 추상화하는 목적은 느슨한 결합을 달성하기 위함단일 구현일 경우, 추상화가 아니게 됨진정한 추상화는 발견하는 것이지 발명하는 것이 아님 (적어도 구현이 두가지 이상 있어야 함)YAGNI 위반 프로세스 외부 의존성에 인터페이스를 사용하는 이유는?목을 사용하기 위함인터페이스가 없으면 테스트 대역을 만들 수 없음즉, 비관리 의존성만 인터페이스를 두기 5. 통합 테스트 모범 사례항목장점권장 사항도메인 모델 경계 명시단위 테스트와 통합 테스트 구분 쉬움 계층 수 줄이기단순화, 탐색 쉬움도메인 모델, 애플리케이션 서비스, 인프라 계층만..

Code/Test 2025.03.01