[Database] DBA급 개발자로 - #19 Database Logging
2022. 12. 4. 10:49
Database/DBA급 개발자로
이전 3개의 포스팅을 통해 DBMS가 어떻게 트랜잭션 동시성을 제어하는지 살펴봤습니다. 이번 포스팅에서는 database logging에 대해 살펴보겠습니다. Database Logging 데이터베이스는 다음과 같은 특성을 보장해야 합니다. 트랜잭션이 abort 된 경우 데이터가 부분적으로 영구 저장소에 저장되면 안 됩니다. 트랜잭션이 commit 된 경우 데이터는 영구 저장소에 영구 저장돼야 합니다. DBMS는 위와 같은 특성을 보장하기 위해 undo와 redo 기능을 제공합니다. Undo: 성공적으로 commit 되지 않거나 abort 된 트랜잭션에 의한 변경사항을 되돌립니다. Redo: Commit된 트랜잭션에 의한 변경사항을 영구저장소에 다시 반영할 수 있습니다. DBMS의 이런 기능이 어떻게 구..
[nGrinder] nGrinder을 이해하고 Script를 작성해보자
2022. 12. 3. 14:42
Open Source/Testing Framework
최근에 회사에서 데이터 마이그레이션을 대비하기 위해 서버의 평균 TPS가 얼마인지 확인해하는 요구사항이 있었습니다. 회사의 대표적인 테스팅 플랫폼으로 nGrinder가 있었기 때문에 nGrinder을 활용해 테스트를 진행했습니다. nGrinder을 학습 과정에서 발견한 유용한 정보들과 nGrinder 스크립트를 작성하는 방법을 공유하기 위해서 이번 포스팅을 작성하게 됐습니다. nGrinder란? nGrinder은 네이버에서 Grinder라는 테스팅 오픈소스에 유용한 기능들을 추가한 대표적인 테스팅 오픈소스 플랫폼입니다. Jython 또는 Groovy 언어를 통해 script가 작성 가능하고 여러 agent에서(컴퓨터) 부하를 발생시킬 수 있습니다. nGrinder의 사용법을 살펴보기 전에 용어와 개념에 ..
[Rancher] Docker Desktop을 대체해보자
2022. 12. 3. 13:36
Open Source
Docker desktop이 유료화되면서 회사에서 docker desktop을 무료로 사용하는 게 불가능해졌습니다. 팀에서 도커를 직접적으로 사용하지 않아 별도로 승인을 받기가 부담스러웠기 때문에 docker desktop의 대체제를 찾아야 했습니다. 참고로 저는 현재 Macbook M1을 사용하고 있습니다. 저는 docker desktop의 대체제로서 rancher을 선택했는데요, 비교적 간편한 UI의 형태이고 아직까지 M1을 지원하는 대중적인 소프트웨어가 눈에 띄지 않았기 때문에 선택했습니다. 사용법이 비교적 간편하지만 권한 문제로 골치 아팠던 경험이 있기에 설치법부터 도커 사용 예시까지 함께 살펴보겠습니다. 도커 설치하기 우선 도커부터 설치하겠습니다. brew install docker docker..
[Database] Storage Engine의 꽃 InnoDB
2022. 11. 21. 11:42
Database/Database 필수
InnoDB는 MySQL의 기본 storage engine입니다. 우리가 사용하는 데이터베이스의 기능(transaction, isolation level 등)은 InnoDB에서 제공하고 있는 만큼 InnoDB를 이해하면 데이터베이스의 기능을 더 효율적으로 활용할 수 있습니다. 이번 포스팅을 통해 InnoDB가 어떤 기능을 어떻게 제공하는지 살펴보겠습니다. 이번 포스팅은 MySQL 경험이 있고 MySQL 기능을 어느 정도 이해한 분들이 대상입니다. InnoDB 란? InnoDB는 MySQL과 MariaDB에서 사용하는 storage engine입니다. InnoDB는 트랜잭션 기능, row-level locking, clustered index를 활용한 효율적인 데이터 저장과 검색 그리고 데이터 정합성을 위..
[Spring Boot] CRUD Project Template
2022. 11. 17. 23:12
Java/Spring Boot
매번 스프링 부트를 활용해서 새로운 프로젝트를 진행할 때마다 기본 환경 구성이 너무 귀찮았습니다. 그래서 저는 제가 자주 사용하는 기술을 모아서 하나의 템플릿으로 만들어서 사용하고 있는데요, 이 프로젝트를 공유드리고자 합니다. https://github.com/seonwoo960000/spring-boot-all-in-one GitHub - seonwoo960000/spring-boot-all-in-one: A spring boot project with default dependencies A spring boot project with default dependencies . Contribute to seonwoo960000/spring-boot-all-in-one development by crea..
[Career] 코드 스테이츠 && 캐치 라이브 멘토링 후기
2022. 11. 17. 08:45
Career/활동
최근 코드 스테이츠와 캐치 라이브에서 멘토링을 진행한 경험이 있었는데요, 이번 포스팅에서 취업 준비생들에게 꼭 필요한 정보와 흔히들 하는 실수에 대해 말씀드리려고 합니다. https://www.catch.co.kr/CatchClass/Live/View/5605 시작 개발자가 되려고 막 마음먹은 단계에서는 어떤 걸 해야 할까요? 최소한 개발이 적성에 맞는지 확인해봐야 한다고 생각합니다. 물론 개발이 적성에 맞지 않아도 개발자가 되는 것은 가능하지만 개발자가 되고 나서 과연 업무가 즐거울지는 의문입니다. 제가 과연 개발이 제 적성에 맞는지 확인했던 방법은 다양한 개발 분야를 얕게나마 접해보는 것이었습니다. front-end, back-end, embedded, artifical intelligence 체험해..
[Database] DBA급 개발자로 - #18 Mutli-Version Concurrency Control
2022. 11. 14. 08:45
Database/DBA급 개발자로
이전 포스팅에서 timestamp ordering을 활용하여 트랜잭션 동시성을 어떻게 제어하는지 살펴봤습니다. 이번 포스팅에서는 multi version의 데이터를 활용해서 트랜잭션 동시성을 제어하는 MVCC에 대해서 살펴보겠습니다. MVCC MVCC(Multi-Version Concurrency Control)는 여러 버전의 데이터를 저장합니다. 트랜잭션은 해당 트랜잭션이 시작한 시점을 기준으로 가장 최근 버전의 데이터를 읽습니다. MVCC를 활용하면 데이터가 특정 시점에 어떻게 변경됐는지 확인할 수 있기 때문에 다양한 isolation level을 보장할 수 있습니다. 또한 특정 시점에 필요가 없는 버전은(더 이상 트랜잭션에 의해 참조되지 않는 데이터) 제거됩니다. MVCC의 장점은 읽기 작업이 쓰기..
[Database] DBA급 개발자로 - #17 Timestamp Ordering Concurrency Control
2022. 11. 13. 11:25
Database/DBA급 개발자로
이전 포스팅에서는 2 phase locking을 통해 어떻게 concurrent transaction을 처리하는지 살펴봤습니다. 이번 포스팅에서는 timestamp를 통해 concurrent transaction을 처리하는 방법을 살펴보겠습니다. Timestamp Ordering Timestamp ordering 방식도 2 phase locking처럼 concurrent transaction을 처리하기 위한 프로토콜입니다. 주된 차이점은 2 phase locking의 경우 트랜잭션이 실행되는 과정에서 충돌이 발생하면 해당 트랜잭션을 롤백하지만 timestamp ordering의 경우 트랜잭션이 실행되기 전에 충돌 여부를 미리 확인합니다. 두 트랜잭션 Ti, Tj이 동시에 진행되고 트랜잭션이 시작된 시간이..