2025/11 10

마틴 파울러가 소개하는 소프트웨어 아키텍처

🤔핵심 목표 1. 마틴 파울러(Martin Fowler)가 약 10분 동안 이야기한 소프트웨어 아키텍처를 정리한다.1 마틴 파울러가 소개하는 아키텍처 PDF 자료 함께보기: https://martinfowler.com/ieeeSoftware/whoNeedsArchitect.pdf소프트웨어 아키텍트는 팀에서 가장 노련한 개발자이자 설계자다. 요구사항을 바탕으로 어떤 컴포넌트와 인터페이스로 시스템을 구성할지 디자인하고, 그 결과를 팀과 공유해 합의를 이끌어낸다. 이렇게 합의된 설계가 곧 아키텍처이며, 이는 한 번 정하면 바꾸기 어려운 결정들의 집합이다. 그래서 아키텍처에는 제품의 핵심 가치가 담기고, 개발에 참여하는 모든 사람이 이해하고 동의하는 최소한의 공통 기반이 된다. 아키텍트는 등반의 가이드와..

💭Retrospective 2025.11.25

MySQL로 배우는 데이터베이스 개론과 실습 2판: Chapter 08 트랜잭션, 동시성 제어, 회복

🔥학습목표 1. 트랜잭션의 개념을 이해하고 데이터베이스에서 이 개념이 왜 중요한지 알아본다. 2. 트랜잭션 실행 시 동시성 제어가 필요한 이유를 알아보고, 락킹을 이용한 동시성 제어 기법을 살펴본다. 3. 락킹보다 완화된 방법으로 트랜잭션의 동시성을 높이는 트랜잭션 고립 수준에 대해 알아본다. 4. 데이터베이스 시스템에 문제가 생겼을 때 쓸 수 있는 복구 방법을 알아본다.PREVIEW일상생활에서 비즈니스는 거래를 중심으로 일어난다. 상품을 주문하고 입금하면 배송이 이루어지고, 판매처에서 배송 확인을 마치민 거래가 완료된다. 그러나 만약 거래가 중간에 멈추어. 입금했는데도 상품이 배송되지 않으민 문제가 된다. 다시 말해, 모든 거래는 배송 확인이 완료되거나 아예 취소되어야 한다. 마..

📚Read 2025.11.25

MySQL로 배우는 데이터베이스 개론과 실습 2판: Chapter 07 정규화

🔥학습목표 1. 데이터베이스 설계 과정에서 발생할 수 있는 이상현사으이 종류와 원인을 알아본다. 2. 함수 종속성의 개념을 이해하고 관련 규칙을 알아본다. 3. 함수 종속성을 이용한 정규화 과정을 알아본다.PREVIEW데이터베이스 설계 과정을 거쳐 테이블이 생성되지만, 잘못 설계된 테이블로 데이터 조작 작업을 하면 이상현상이 발생할 수 있다. 이상현상은 데이터베이스의 일관성을 손상시켜 데이터의 무결성을 깨뜨리는 현상을 의미한다. 이 문제를 해결하려면 속성 간의 함수 종속성을 파악하여 테이블올 몇 가지 규칙에 따라 분해해야 한다. 이러한 과정을 정규화라고 한다. 정규화는 잘못 설계된 테이블을 수정하여 데이터의 일관성과 무결성을 회복시키는 프로세스다. 정규화를 통해 테이블을 분해하면 데이터..

📚Read 2025.11.25

MySQL로 배우는 데이터베이스 개론과 실습 2판: Chapter 06 데이터 모델링

🔥학습목표 1. 데이터 모델링의 개념을 이해한다. 2. 개념적 모델링 단계에 사용하는 ER 모델을 이해하고 작성 방법을 알아본다. 3. MySQL Workbench를 사용하여 ER 몯레을 작성해 본다. 4. 마당대학 데이터베이스를 ER 모델로 직접 설계해 본다.PREVIEW지금까지 데이터베이스 시스템과 SQL의 개념을 살펴보았다. 함께 언급한 마당서점 데이터베이스는 설명을 위한 예시였지만, 실제 서점에서 사용하는 데이터베이스와 유사하다. 이 장에서는 마당서점 데이터베이스가 어떻게 만들어졌는지를 살펴보자. 건축에 비유하면, 서점의 판매관리 소프트웨어는 건물 설계와 유사하고, 데이터베이스는 지반 설계와 같다. 건물을 지을 때와 마찬가지로 소프트웨어가 사용하는 데이터베이스에도 설계가 필..

📚Read 2025.11.25

MySQL로 배우는 데이터베이스 개론과 실습 2판: Chapter 05 데이터베이스 프로그래밍

클라이언트와 서버, 클라우드 서버일상생활에서 서버(server)는 서비스하는 사람을 가리키고, 클라이언트(client)는 서비스 받는 사람을 가리킨다. 컴퓨터에서 서버는 특정한 임무를 수행하는 컴퓨터 시스템을 뜻하고, 클라이언트는 서버로부터 서비스를 받는 프로그램이나 컴푸터 시스템을 뜻한다.데이터베이스를 서비스하는 DBMS가 설치된 컴퓨터를 데이터베이스 서버라고 한다. 데이터베이스 서버와 클라이언트가 같은 컴퓨터이거나 같은 컴퓨터 안에 있는 경우는 드물다. 그래서 다음과 같은 구조가 된다. 서버 시스템(데이터베이스) ↔ 클라이인트 시스템 실제로는 서버 시스템과 클라이언트 시스템 사이에 데이터베이스 서버로부터 받은 데이터를 처리하는 응용 프로그램이 존재하는데, 이것을 비즈내스 로직(business logi..

📚Read 2025.11.24

MySQL로 배우는 데이터베이스 개론과 실습 2판: Chapter 04 SQL 고급

🔥학습목표 1. 내장 함수의 의미를 알아보고 자주 사용되는 내장 함수 몇 가지를 직접 실습해 본다. 2. 부속질의의 의미와 종류를 알아보고 직접 실습해 본다. 3. 뷰의 의미를 알아보고 뷰를 직접 생성 · 수정 · 삭제해 본다. 4. 데이터베이스의 저장 구조와 인덱스 간 관계, 인덱스의 구조를 이해한다. 5. MySQL 인덱스 종류를 알아보고 인덱스를 직접 생성 · 수정 · 삭제해 본다.PREVIEW3장에서 SQL 기초 문법에 대해 알아보았다. SQL 기초 문법은 기본적인 데이터베이스 운영에 충분히 사용할 수 있으나 업무가 복잡해지고 처리해야 할 자료가 많아지면 기초 문법이 제공하는 기능만으로는 한계가 있다. 이 장에서는 복잡한 질의를 해결할 때 사용하는 SQL 고급 문법에..

📚Read 2025.11.24

MySQL로 배우는 데이터베이스 개론과 실습 2판: Chapter 03 SQL 기초

🔥학습목표 1. SQL의 개념과 주요 명령어를 알아본다. 2. SELECT 문으로 질의를 처리하는 방법을 알아본다. 3. 집계 함수와 GROUP BY 문으로 질의를 처리하는 방법을 알아본다. 4. 두 개 이상의 테이블을 조회하여 질의를 처리하는 방법을 알아본다. 5. DDL로 테이블의 구조를 정의하고 변경하는 방법을 알아본다. 6. DML로 데이터를 삽입 · 수정 · 삭제하는 방법을 알아본다.PREVIEWSQL은 크게 데이터 정의어(DDL), 데이터 조작어(DML), 데이터 제어어(DCL)로 나뉜다. 데이터 정의어는 테이블의 구조를 만들 때, 데이터 조작어는 저장된 데이터를 검색 · 삽입 · 수정 · 삭제할 때, 데이터 제어어는 데이터에 대한 접근 권한을 제어할 때 사..

📚Read 2025.11.24

MySQL로 배우는 데이터베이스 개론과 실습 2판: Chapter 02 관계 데이터 모델

🔥학습목표 1. 관계 데이터 모델의 개념을 이해한다. 2. 관계 데이터 모델의 제약조건을 알아본다. 3. 관계 데이터 모델의 연산인 관계대수의 종류와 작성법을 알아본다.PREVIEW데이터베이스 시스템에서 가장 중요한 것은 데이터다. 데이터 간 관계 설정과 저장 방법에 관한 여러 이론이 제시되었는데, 이를 데이터 모델이라고 한다. 데이터 모델에는 네트워크 데이터 모델, 계층 데이터 모델, 관계 데이터 모델, 객체-관계 데이터 모델 등이 있다. 이 중에서 관계 데이터 모델을 가장 많이 사용한다. 관계 데이터 모델은 사용자들이 데이터에 접근하기 쉬운 테이블 형태로 데이터 간의 관계를 표현한다. 네트워크 데이터 모델과 계층 데이터 모델이 자료를 레코드 단위로 복잡하게 처리하였다면, 관계 데이터..

📚Read 2025.11.24

MySQL로 배우는 데이터베이스 개론과 실습 2판: Chapter 01 데이터베이스 시스템

🔥 학습목표 1. 데이터베이스의 유형을 알아보고 개념 및 특징을 이해한다. 2. 정보 시스템의 발전 과정을 통해 데이터베이스 시스템의 등장 배경을 이해한다. 3. 파일 시스템과 DBMS를 비교하여 DBMS의 장점을 이해한다. 4. 데이터베이스 시스템의 구성 요소를 알아본다.01 데이터베이스와 데이터베이스 시스템 데이터베이스(Database)는 조직에 필요한 정보를 얻기 위해 논리적으로 연관된 데이터를 모아 구조적으로 통합해 놓은 것이다.데이터(data): 관찰의 결과로 나타난 정량적 혹은 정성적인 실제 값정보(Information): 데이터에 의미(meaning)를 부여한 것지식(knowledge): 사물이나 현상에 대한 이해데이터베이스의 개념 및 특징데이터베이스는 '여러 사람이 공용으로..

📚Read 2025.11.23

수십 만 건 이상의 주문 데이터와 시스템에서 인덱스로 조회 성능 최적화

미리 살펴보는 문제 상황주문 조건 조회 API와 회원별 주문 통계 조회 API의 평균 응답 시간이 3초 이상 발생로그 분석 및 EXPLAIN 결과, 다음과 같은 병목 지점을 확인1. Full Scan 발생복합 조건 검색(날짜, 상태, 최소 금액 등) 시 적절한 인덱스가 없어 v1_orders에서 테이블/인덱스 풀 스캔이 발생 2.실시간 GROUP BY 통계 집계회원별 주문 통계 조회 시 v1_orders + v1_members를 실시간으로 GROUP BY 하면서임시 테이블 생성 및 대량 집계 연산으로 응답 시간이 길어짐 3. N+1 문제로 인한 불필요한 JOIN/조회복합 주문 검색 결과(페이지당 20건)에 대해, 각 주문별로 order_items를 추가 조회-> DTO 변환 시 order.getOrder..

💭Retrospective 2025.11.13