분류 전체보기 298

2장 객체지향 프로그래밍 / 3장 역할, 책임, 협력

관련 실습 PR 링크 : https://github.com/object-nextstep21/object/pull/12장 객체지향 프로그래밍OOP 를 향해협력, 객체, 클래스OOP 작성할 때 클래스를 결정하고 클래스에 어떤 속성과 메서드 고민 X객체에 초점을 맞출 때 가능어떤 객체인지!도메인사용자의 문제를 해결하기 위해 사용자가 프로그램을 사용하는 분야자율적인 객체객체는 상태(state)와 행동(behavior)을 함께 가지는 복합적인 존재객체가 스스로 판단하고 행동하는 자율적인 존재이렇게 데이터와 기능을 묶는것을 캡슐화라고 한다 이를 위해 접근 제어를 이용한다객체의 두 부분 (seperation of interface and implementation)public interface외부에서 접근가능하다메시..

서적/Object 2026.01.29

1장 객체, 설계

들어가며글래스는 스포트웨어 크리에이티비티2.0 에서 이론보다 실무가 먼저라고 한다. 다른 분야에 비해 역사가 짧기 때문이다.특히 소프트웨어 설계와 소프트웨어 유지보수가 실무가 앞서있다.소프트웨어 생명 주기 동안 유지보수가 차지하는 비중을 감안할 때 이론은 매우 실망스럽다. 결국 실무에 초점을 맞추는게 중요하다.추상적인 개념과 이론은 훌륭한 코드를 작성하는데 필요한 도구이다.01 티켓 판매 애플리케이션 구현하기1장의 첫 구현의 로직은 간단하고 예상대로 동작한다. 하지만 몇가지 문제점이 있다.02 무엇이 문제인가로버트 마틴은 클린 소프트웨어에서 소프트웨어 모듈이 가져야하는 3가지 기능을 설명한다제대로 동작해야한다변경을 위해 존재해야한다 어렵다면 개선해야한다코드를 읽는 사람과 의사소통 하는것이다. 특별한 훈련..

서적/Object 2026.01.21

10. 실행 계획 (Execution Plan)

10장: 실행 계획 (Execution Plan)실행 계획을 이해하는 것은 개발자와 DBA의 필수 역량이다. 쿼리 튜닝은 곧 옵티마이저가 수립한 실행 계획의 합리성을 판단하고, 비합리적일 경우 이를 최적의 경로로 개선하도록 유도하는 작업이기 때문이다. 만약 옵티마이저의 통계 정보가 부정확하여 잘못된 실행 계획이 수립되면, 0.1초 만에 완료될 수 있는 쿼리가 1시간 이상 소요되는 치명적인 성능 저하를 초래할 수 있다1. 쿼리 실행 계획의 토대: 통계 정보 (Statistics)MySQL 서버는 비용 기반 최적화(Cost-based optimizer, CBO) 방식을 채택하고 있으며, 이 CBO가 최적의 실행 경로를 찾기 위해 가장 중요하게 참조하는 것이 바로 통계 정보이다.1.1 히스토그램 (Histog..

서적/Real MySQL 2025.11.14

09. 옵티마이저와 힌트 (Optimizer and Hints)

옵티마이저는 사용자가 요청한 쿼리를 실행하는 데 최소의 비용이 소요되는 최적의 실행 방법을 결정하는 DBMS의 두뇌 역할을 담당한다.9.1 옵티마이저 개요 및 원리1. 쿼리 실행 절차MySQL 서버에서 쿼리가 실행되는 과정은 크게 세 단계로 구분된다SQL 파싱 (Parsing): 요청된 SQL 문장을 최소 단위(토큰)로 분리하여 파스 트리(Parse Tree)를 생성하고 문법 오류를 확인한다. MySQL은 SQL 문장 자체가 아닌 이 파스 트리를 이용하여 쿼리를 실행한다.최적화 및 실행 계획 수립: 옵티마이저가 파스 트리를 기반으로 다음과 같은 핵심 결정을 내리고 실행 계획을 수립한다불필요한 조건 제거 및 복잡한 연산 단순화여러 테이블 조인 시 어떤 순서로 테이블을 읽을지 결정 (조인 순서)사용된 조건과..

서적/Real MySQL 2025.10.30

08. 인덱스 [8.1 디스크 읽기 방식 ~ 8.4 R-Tree 인덱스]

08장 인덱스: 8.1 디스크 읽기 방식 ~ 8.4 R-Tree 인덱스 8.1 디스크 읽기 방식 (Disk Reading Methods)인덱스가 데이터베이스 성능에 미치는 영향을 이해하려면, 데이터를 저장하는 디스크의 작동 방식, 특히 I/O (Input/Output) 성능을 먼저 이해가 필요합니다.8.1.1 하드 디스크 드라이브(HDD)와 솔리드 스테이트 드라이브(SSD)HDD와 SSD는 물리적 작동 방식이 다릅니다. 전통적인 HDD는 데이터를 읽기 위해 디스크를 회전시키고 헤드를 움직여야 하므로(기계적 작동), 데이터를 찾는 데 걸리는 시간인 탐색 시간(Seek Time)이 I/O 성능에 큰 영향을 미칩니다. 반면 SSD는 플래시 메모리를 사용하므로 기계적 지연이 없어 I/O 작업이 훨씬 빠릅니다.8..

서적/Real MySQL 2025.10.14

05. 트랜잭션과 잠금 (Transaction and Lock)

5장: 트랜잭션과 잠금 (Transaction and Lock) 요약트랜잭션과 잠금은 MySQL의 동시성(Concurrency)과 데이터 정합성(Consistency)을 유지하는 핵심적인 기능입니다.잠금은 동시성 제어하기 위한 기능이고, 트랜잭션은 데이터 정합성을 보장하기 위한 기능이다.5.1 트랜잭션 (Transaction)원리:트랜잭션은 작업의 완결성을 보장하는 기능입니다. 여러 개의 쿼리를 포함하는 하나의 논리적 작업 묶음이 전부 성공하거나(COMMIT), 실패할 경우 작업의 일부만 적용되는 현상(Partial update)이 발생하지 않도록 원자성(Atomicity)을 보장합니다.MySQL 서버에서는 InnoDB 스토리지 엔진이 트랜잭션을 지원하지만, MyISAM이나 MEMORY 같은 구형 엔진은..

서적/Real MySQL 2025.09.23

04. 아키텍처 [4.2 InnoDB 스토리지 엔진 아키텍처 / 4.3, 4.4]

4.2 InnoDB 스토리지 엔진 아키텍처I. 들어가며MySQL의 주요 스토리지 엔진인 InnoDB의 핵심 개념과 내부 동작 방식을 개발자와 DBA 관점에서 설명합니다. InnoDB는 높은 안정성, 성능, 동시성 처리 능력을 제공하는 것이 특징이며, 그 아키텍처는 데이터를 저장하고, 동시성을 제어하며, 성능을 높이고, 데이터를 보호하는 메커니즘을 중심으로 이해할 수 있습니다.데이터를 어떻게 저장하는가 (저장 방식)동시성 이슈를 어떻게 처리하는가 (동시성 제어)성능을 어떻게 높이는가 (메모리 활용)데이터를 어떻게 보호하는가 (복구 메커니즘)II. 주요내용1. 데이터 저장 방식: 프라이머리 키와 클러스터링InnoDB는 데이터를 디스크에 저장하는 방식에 있어 독특하고 효율적인 접근 방식을 사용합니다.주요 원리..

서적/Real MySQL 2025.09.16

04. 아키텍처 [4.1 MySQL 엔진 아키텍처]

각 단원별 핵심 키워드4.1 MySQL 엔진 아키텍처: 전체 구조, 스레드, 메모리, 스토리지 엔진, 컴포넌트, 쿼리 실행, MySQL 8.0 변경점.4.1.1 MySQL 서버의 전체 구조: 두 가지 주요 계층, Handler API, MySQL 엔진, 스토리지 엔진, 데이터 읽기/쓰기.4.1.1.1 MySQL 엔진: SQL 쿼리 처리, 클라이언트 연결 관리, 쿼리 파싱 및 최적화, 쿼리 실행.4.1.1.2 스토리지 엔진: 데이터 읽기/쓰기, 플러그인 아키텍처, InnoDB, MyISAM.4.1.1.3 핸들러 API: MySQL 엔진과 스토리지 엔진 간 통신, 데이터 작업 함수.4.1.2 MySQL 스레드 구조: 스레드 기반 모델, 포그라운드 스레드, 백그라운드 스레드.4.1.2.1 포그라운드 스레드: ..

서적/Real MySQL 2025.09.02

SMS 발송 한도 관리(Redis VS MySQL)

I. 들어가며회사 서비스에서 SMS발송 시 한국 외 고객(국제 발송 : 전체 유저의 45%)에게는 YY서비스(CPaaS)을 사용해 SMS를 발송한다. 하지만 YY서비스은 일부 미국 통신사로는 발송이 실패하는 문제가 있었다. 이 부분을 보완하기 위해 국내 XX텔레콤(SMS Provider)을 통한 SMS fallback을 붙였다. 그런데 문제는 비용 국내 XX텔레콤(SMS Provider)의 국내SMS 와 국제 SMS간의 비용차이는 10배이다. fallback은 SMS발송 품질을 위해 꼭 필요하지만, abuse가 발생하면 손해가 발생할 수있다. 그래서 하루 발송 한도 관리(Quota)가 반드시 필요했고, 한도 관리를 위한 방법으로 고려한 MySQL과 Redis를 고민하며 해결했다. II. 문제정의1. My..

CHAPTER 10 클라우드에서 사용하는 레디스 [PART 02 실전]

I. OSS와 레디스의 차이1. 고유 기능(1) 완전 관리형 서비스 형태 제공ElastiCache는 다른 AWS 서비스와의 통합이 용이할 뿐만 아니라 완전 관리형 서비스로 운영되며, 하드웨어 프로비저닝, 소프트웨어 패치 적용, 셋업, 설정 작업, 모니터링, 장애 시 자동 복구 등 대부분의 작업이 자동화되어 있다반면, OSS Redis는 장애 대응이나 메트릭 모니터링 등 운영 전반을 사용자가 직접 관리해야 하며, 클라우드 플랫폼과의 통합 역시 별도의 작업이 필요하다ElastiCache는 백업(자동 및 수동), 복원, 이벤트 알림, 셀프서비스 업데이트 기능을 갖추고 있어 관리 편의성이 높다→ 실무에서는 운영 부담을 줄이고 안정적인 Redis 환경을 구성하는 데 유리하다특히 빈번한 패치 적용, 장애 복구, 자..

서적/실전 Redis 2025.07.29