Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 19 additions & 0 deletions 08장/지민재.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
## 8장 핵심 정리

소프트웨어 개발에서 데이터는 단순히 저장하고 조회하는 대상이 아니라 **애플리케이션의 구조와 성능, 신뢰성을 결정하는 중요한 요소**다. 데이터를 효과적으로 다루기 위해서는 정형 데이터와 비정형 데이터의 차이를 이해하고, 데이터의 특성과 사용 목적에 맞는 형식과 저장 방식을 선택해야 한다. JSON, XML, CSV, YAML 등 데이터 형식마다 장단점이 있으며, 데이터베이스 역시 관계와 일관성이 중요한 경우에는 관계형 데이터베이스를, 유연한 구조가 필요한 경우에는 문서 데이터베이스를 사용하는 등 요구사항에 따라 적절하게 선택해야 한다.

데이터를 저장하는 방식뿐 아니라 **접근하고 관리하는 방식**도 중요하다. 데이터베이스 직접 접근, 저장소 패턴, ORM 등은 각각 제어 범위와 추상화 수준이 다르므로 개발 환경과 팀의 역량, 성능 요구사항을 고려해 선택해야 한다. 또한 트랜잭션을 통해 데이터의 무결성을 보장하고, 캐시와 연결 풀을 활용해 성능을 개선할 수 있다. 다만 캐시는 응답 속도를 높이는 대신 오래된 데이터를 제공할 가능성이 있고, 데이터의 정확성과 가용성 사이에도 trade-off가 존재하므로 서비스의 특성에 맞는 일관성 모델과 캐시 전략을 선택해야 한다.

데이터가 증가하더라도 안정적인 서비스를 유지하려면 처음부터(!!) 데이터의 규모와 성능을 고려해야 한다. 필요한 열과 데이터만 조회하고, 적절한 색인과 페이지네이션을 적용하며, 실행 계획과 모니터링 도구를 활용해 병목 지점을 파악해야 한다. 이때 무조건 높은 추상화 수준이나 복잡한 최적화 기법을 사용하는 것이 정답은 아니다. 유지보수성과 성능 사이의 균형을 고려하고, 실제 측정 결과를 바탕으로 개선하는 것이 중요하다.

마지막으로 데이터베이스 스키마와 데이터는 서비스가 발전함에 따라 계속 변화하므로, 데이터 이전과 변환을 안전하게 관리하는 과정도 필요하다. 스키마 변경을 버전 관리하고, 이전 과정에서 데이터를 검증하며, 문제가 발생했을 때 대응할 수 있는 계획을 마련해야 한다. 결국 데이터 관리에는 모든 상황에 적용되는 완벽한 해결책이 없으며, 현재의 요구사항을 바탕으로 합리적인 선택을 내리고 서비스의 성장에 맞춰 개선해 나가는 태도가 중요하다.

## 인상 깊었던 부분

> 데이터베이스 선택은 애플리케이션과 함께 발전할 수 있으며, 영구적인 선택은 없다.

→ 개발을 하다 보면 처음부터 가장 좋은 기술이나 구조를 선택해야 한다고 생각하기 쉽다. 하지만 이 부분을 읽으면서 처음부터 완벽한 선택을 하는 것보다 현재 상황과 요구사항에 적합한 선택을 하고, 서비스가 성장함에 따라 유연하게 개선하는 것이 더 중요하다는 생각이 들었다. 처음부터 모든 상황을 예측해 설계하기는 어렵기 때문에, 불필요하게 복잡한 구조를 만들기보다는 현재 필요한 수준에서 시작하고 실제로 발생하는 문제를 해결해 나가는 태도가 중요하다고 느꼈다!!

> 한 가지 접근 방식을 무작정 따르기보다는 주어진 상황에 따라 득실을 따지는 법을 배워야 한다.

→ 개발할 때는 반복적인 작업을 줄여주고 코드를 간결하게 만들어 주는 도구나 추상화 방식을 사용하는 것이 효율적이라고 생각하기 쉽다. 하지만 편리한 도구를 사용하는 것만으로 모든 문제가 해결되는 것은 아니며, 상황에 따라 오히려 성능이나 디버깅 측면에서 어려움이 생길 수도 있다는 점이 인상 깊었다. 특정 기술이나 방식을 무조건 좋은 것으로 받아들이기보다는, 해당 기술이 어떤 문제를 해결해 주고 어떤 단점이 있는지 이해한 뒤 선택하는 개발자가 되어야겠다고 느꼈다.(제발!!)
Loading