2024.10.26 - [Programming/Spring] - [Spring Boot] WebSocket, Kafka 채팅 서버 구현 (1)2024.11.04 - [Programming/Spring] - [Spring Boot] WebSocket, Kafka 채팅 서버 구현 (2)채팅 서버를 만들고 이를 활용하기 위해서 낸 아이디어가 크롬 확장자이다. 단순하게 각 URL 별로 확장자를 통해 익명 채팅할 수 있다면 어떤 웹사이트에서도 채팅 기능이 구현되어있는 것처럼 `확장자` 스럽게 사용할 수 있을 것 같았다. 그래서 이번 포스팅에서는 크롬 확장자를 구성해 보겠다. https://support.google.com/chrome/a/answer/2714278?hl=ko 맞춤 Chrome 앱 및 확장 프로그..
전체 글
행복한띠용이의 코딩 블로그입니다.소프티어 부트캠프를 하면서 멘토님이나 현직자 분들이 공통적으로 추천해준 책이라 읽어보고자 한다.실제 코드가 없어서 "그래서 어떻게 적용시키라는 건데?" 라는 의문이 든다고 익히 알고 있다. 실제 서문에서도 비슷한 내용이 있고, 내용을 경험과 연결 짓기 위해 어느 정도의 지식이 필요하다고 한다. 다시 말해 결국 경험도 필요하다는 것이다.실제 다회독 할 때마다 보이는 것이 많다고 하니 이번 기회에 1회독을 시작해보고자 한다.1장. 협력하는 객체들의 공동체객체지향이란?실세계를 소프트웨어로 구현하는 것이 객체 지향의 철학하지만 실제 소프트웨어 객체와 실세계 사물 간 연관성은 희미하다실세계를 모방하는 것이 아니라 새로운 세계를 창조하는 것생명체에 비유하는 이유는 캡슐화와 자율성을 설명하기 효과적이기 때문이다.현실..
2024.10.26 - [Programming/Spring] - [Spring Boot] WebSocket, Kafka 채팅 서버 구현 (1) 이제 Kafka 를 사용해서 채팅 서버를 구현해보고자 한다. 추가 환경 설정 하지만 이전에 해당 글을 통해 Kafka 서버 실행을 Docker-compose 를 통해 한 번에 실행하며, 추가적으로 Kafka-UI 까지 사용할 수 있었다.2024.10.31 - [Programming/Coding] - Docker 를 통한 일관된 개발 환경 배포 방법version: '3'services: zookeeper: image: confluentinc/cp-zookeeper:latest container_name: zookeeper environment: ..
10장 실행 계획MySQL 서버에서 보여주는 실행 계획을 읽고 이해하려면 서버가 데이터를 처리하는 로직을 이해해야한다.10.1 통계 정보테이블과 인덱스, 데이터 분포도를 수집해서 저장하는 히스토그램 정보를 통해 실행 계획을 수립한다.10.1.1 테이블 및 인덱스 통계 정보비용 기반 최적화에서 가장 중요한 것이 통계 정보이다.서버의 통계 정보InnoDB 스토리지 엔진을 사용하는 테이블에 대한 통계 정보를 영구적으로 관리할 수 있다. 이전에는 메모리에서만 관리되었는데, 서버가 재시작되면 모든 수집 정보가 사라진다. 따라서 통계 정보를 테이블로 관리할 수 있게 되었다.10.1.2 히스토그램이전에는 통계 정보가 단순히 인덱스된 칼럼의 유니크한 값 개수 정도만 가지고 있었다. 그래서 실제 인덱스의 일부 페이지를 ..
9장 옵티마이저와 힌트9.3 고급 최적화서버의 옵티마이저는 실행 계획을 수립할 때 통계 정보와 옵티마이저 옵션을 결합해 최적의 실행 계획을 수립한다. 옵션은 크게 조인 관련 옵션과 스위치로 구분할 수 있다.옵티마이저 스위치 옵션스위치 옵션은 optimizer_switch 시스템 변수를 통해 제어한다.글로벌과 세션별 모두 설정할 수 있는 변수이므로 서버 전체 및 커넥션에 대해 설정할 수 있다. MRR과 배치 키 액세스 Multi-Range Read 이다. 조인은 드라이빙 테이블에서 하나의 레코드를 읽어 드리븐 테이블의 일치하는 레코드를 찾는 방식이다. 이를 네스티드 루프 조인이라 한다. 내부적으로는 MySQL 엔진이 조인을 처리하지만, 레코드를 검색하고 읽는 것은 스토리지 엔진이 담당한다. 따라서 레코드..