카테고리 없음

패스트캠퍼스 환급챌린지 56일차 : 코드팩토리의 백엔드 아카데미 : 한 번에 끝내는 NestJS 패키지 - 기초부터 MSA까지 강의 후기

Laftel 2025. 4. 29. 15:23
반응형

***본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다
Transaction 트랜젝션의 이론 
트랜젝션은 여러 오퍼레이션을 하나의 논리적인 작업으로 실행하는 기능이다

Transaction의 문제점



Lost Reads

두 트랜잭션이 같은 데이터를 업데이트해서 하나의 업데이트가 손실되는 경우

Dirty Reads

아직 Commit 되지 않은 값을 다른 트랜잭션이 읽는 경우

Non-repeatable Reads

한 트랜잭션에서 데이터를 두번 읽을때 다른 결과가 나오는 경우

Phantom Reads

첫 Read 이후에 다른 트랜잭션에서 데이터를 추가한 경우

데이터베이스 트랜잭션 이론을 학습하면서, 단순히 데이터베이스 조작의 묶음이라는 표면적인 이해를 넘어 데이터 무결성을 보장하고 동시성 제어를 통해 안정적인 시스템 운영을 가능하게 하는 핵심적인 메커니즘임을 깊이 깨닫게 되었습니다. 특히 ACID 속성이라는 명확한 기준을 통해 트랜잭션의 중요성을 이해하고, 격리 수준에 따른 다양한 트레이드오프를 고려해야 하는 점이 인상 깊었습니다.
첫째, ACID 속성의 명확한 이해를 통해 데이터베이스의 신뢰성을 확보하는 기반을 마련했다는 점이 가장 큰 수확입니다. Atomicity(원자성), Consistency(일관성), Isolation(격리성), Durability(영속성)라는 네 가지 속성은 트랜잭션이 반드시 지켜야 할 약속이며, 이를 통해 데이터베이스는 예상치 못한 오류나 동시 접근 상황에서도 데이터의 무결성을 보장할 수 있다는 점을 명확히 인식했습니다. 마치 건물을 지을 때 튼튼한 기초 공사와 핵심 구조를 확보해야 안전하고 오래가는 건축물을 만들 수 있는 것처럼, ACID 속성은 데이터베이스 시스템의 신뢰성을 확보하는 가장 기본적인 토대임을 깨달았습니다.
둘째, 격리 수준에 따른 다양한 트레이드오프를 이해하고 실제 시스템 설계에 적용해야 하는 중요성을 인지했습니다. Read Uncommitted부터 Serializable까지 다양한 격리 수준은 동시성 제어 수준과 성능 사이의 균형점을 제시합니다. 높은 격리 수준은 데이터 무결성을 강화하지만, 동시 처리 성능을 저하시킬 수 있으며, 낮은 격리 수준은 성능을 향상시키지만 데이터 불일치 문제를 야기할 수 있습니다. 따라서 실제 시스템을 설계할 때는 애플리케이션의 특성과 데이터의 중요도를 고려하여 적절한 격리 수준을 선택하는 것이 매우 중요하다는 점을 깨달았습니다. 마치 여러 사람이 함께 사용하는 공유 자원에 접근할 때, 엄격한 규칙을 적용하면 안전하지만 효율성이 떨어지고, 느슨한 규칙을 적용하면 효율성은 높지만 충돌 위험이 증가하는 상황과 유사하다고 생각합니다.
셋째, 트랜잭션 관리가 애플리케이션 개발 복잡성을 증가시키는 요인이 될 수 있지만, 데이터 신뢰성 확보를 위해서는 필수적인 과정임을 이해했습니다. 여러 데이터베이스 조작을 하나의 논리적인 작업 단위로 묶고, 성공 또는 실패 시 모두 반영하거나 롤백하는 트랜잭션 관리는 개발자가 고려해야 할 사항을 늘리고 코드 복잡성을 증가시킬 수 있습니다. 하지만, 금융 거래나 중요한 비즈니스 로직 처리 과정에서 데이터의 정확성과 신뢰성을 보장하기 위해서는 트랜잭션 관리가 필수적이며, 이를 소홀히 할 경우 심각한 데이터 오류나 시스템 장애를 초래할 수 있다는 점을 명확히 인식했습니다. 마치 복잡한 기계를 정밀하게 제어하기 위해 다양한 센서와 제어 장치가 필요한 것처럼, 데이터의 무결성을 유지하기 위해서는 꼼꼼한 트랜잭션 관리가 필수적입니다.
넷째, TypeORM과 같은 ORM 프레임워크가 제공하는 트랜잭션 관리 기능을 효과적으로 활용하는 능력의 중요성을 확인했습니다. TypeORM은 @Transaction 데코레이터나 EntityManager를 통한 트랜잭션 관리 기능을 제공하여 개발자가 복잡한 트랜잭션 로직을 비교적 쉽게 구현할 수 있도록 지원합니다. 이러한 프레임워크의 기능을 잘 이해하고 활용하는 것은 개발 생산성을 높이고 안정적인 시스템을 구축하는 데 매우 중요하다고 생각합니다. 마치 숙련된 목수가 다양한 도구를 능숙하게 사용하여 복잡한 작업을 효율적으로 처리하는 것처럼, ORM이 제공하는 트랜잭션 관리 기능을 잘 활용하는 것은 개발 효율성을 극대화하는 방법입니다.
마지막으로, 트랜잭션 이론 학습은 데이터베이스 시스템의 근본적인 동작 원리를 이해하고, 데이터 관리에 대한 깊이 있는 사고를 가능하게 하는 중요한 토대가 된다는 점을 깨달았습니다. 단순히 코드를 작성하는 것을 넘어, 데이터베이스의 내부 작동 방식과 트랜잭션의 의미를 이해하는 것은 더 나아가 안정적이고 성능 좋은 애플리케이션을 설계하는 데 필수적인 역량이라고 생각합니다. 마치 자동차를 운전하는 사람이 엔진의 작동 원리를 이해하면 더욱 안전하고 효율적인 운전을 할 수 있는 것처럼, 데이터베이스 트랜잭션에 대한 깊이 있는 이해는 숙련된 개발자로 성장하는 데 중요한 밑거름이 될 것입니다.


#패스트캠퍼스 #직장인자기계발 #직장인공부 #환급챌린지 #패스트캠퍼스후기 #오공완
https://bit.ly/4hTSJNB  

반응형