
개요개발자를 위한 시스템 설계 수업을 읽고 있는데 확률적 자료 구조로 언급된 도구들이 재미있고 또 처음 알게된 것들도 있어 정리해본다. 다만 개념에 대한 이해보다는 어떠한 상황에서 어떠한 이점을 얻기 위해 사용하는지를 보려 한다. GPT의 도움을 받아 정리하였다.일관된 해싱(Consistent Hashing)해싱을 사용해 노드마다 골고루 키-값을 분산해두었는데 노드 수가 늘거나 줄면 키-값을 재배치해야 한다. 이때 재배치되는 키의 비율을 최소화 하는 것이 목표이다.실제 사용 상황 예시분산 캐시 클러스터(Memcached/Redis) 증설·축소 시 캐시 미스 폭증을 피하고 싶을 때샤딩된 키-값 저장소(Cassandra/Riak 등)에서 노드 장애/교체가 잦을 때CDN/오브젝트 스토리지에서 콘텐츠를 엣지/스..

개요도메인 주도 설계 첫걸음을 재독 중인데 명확히 하고픈 용어를 정리해둔다.구체화 뷰(Materialized View)1. 개념구체화 뷰(Materialized View)는 쿼리 결과를 미리 계산하여 실제 테이블처럼 저장해 두는 뷰이다.일반 뷰(View)는 매번 쿼리를 실행할 때 원본 테이블에서 데이터를 가져오지만, 구체화 뷰는 쿼리 결과를 디스크에 저장하므로 조회 성능이 매우 빠르다.2. 동작 방식생성 시점: 정의된 SELECT 쿼리를 실행하고 그 결과를 물리적으로 저장조회 시점: 저장된 결과를 바로 반환 → 반복 조회 시 성능 이점갱신(Refresh): 원본 데이터가 바뀌더라도 자동 반영되지 않으므로, 주기적으로 REFRESH를 실행하거나 트리거로 동기화해야 한다3. 장단점장점복잡한 조인, 집계 쿼리..

개요도메인 주도 설계 첫걸음을 재독 중인데 명확히 하고픈 용어를 정리해둔다.낙관적 동시성1. 개념“설마 충돌하겠어?”낙관적 동시성(Optimistic Concurrency Control, OCC)은 동시 접근이 드물게 충돌한다고 가정하는 전략이다. 여러 사용자가 같은 데이터를 동시에 수정하더라도, 대부분의 경우 충돌이 일어나지 않는다는 “낙관적” 전제 위에서 동작한다.즉, 먼저 락을 걸지 않고 자유롭게 작업을 진행한 뒤, 최종 저장 시점에 충돌 여부를 검사한다.2. 동작 방식읽기(Read): 데이터를 가져올 때 버전 정보(예: version number, timestamp)를 함께 가져온다.이렇게 읽은 값에 대해 작업을 할 때까지 다른 사용자가 수정하지 않을 것이라고 낙관적으로 보는 것이다.그러기 위해서..

개요개발을 하다보면 헤드리스 모드(Headless Mode)라는 말을 종종 듣는데 그 뜻을 명확히 알지 못한채 지내왔다. 이번에 Claude Code 관련 유튜브에서 다시금 헤드리스 모드 이야기를 하기에 GPT-5를 이용하여 정리해본다.TL;DR원래는 GUI(머리, 화면) 없이 프로그램을 실행하는 방식을 뜻한다.브라우저·게임·VM 등 원래 화면이 있어야 하는 프로그램을 백그라운드에서 자동화·테스트용으로 돌릴 때 자주 쓰인다.비인터랙티브(non-interactive) 모드, 즉 입력이 없이 한 번 실행하는 경우와 비슷하지만, 헤드리스 모드는 “화면 없음”에, 비인터랙티브는 “사용자 개입 없음”에 강조점이 있다.Claude Code에서 claude -p 실행을 헤드리스 모드라 부르는 것도 같은 맥락으로, 대..

개요주니어 백엔드 개발자가 반드시 알아야 할 실무 지식을 읽다가 selectivity 라는 표현을 처음보아서 관련한 내용을 GPT-5와 함께 정리해보았다.왜 이 개념들이 중요한가?실무에서 데이터베이스를 다루다 보면 이런 상황들을 자주 마주하게 된다:인덱스를 만들었는데도 쿼리가 여전히 느린 경우옵티마이저가 예상과 다른 실행 계획을 선택하는 경우사용되지 않는 인덱스가 스토리지만 차지하는 경우이 모든 문제의 뿌리에는 카디널리티(Cardinality)와 선택도(Selectivity)에 대한 이해 부족이 있다. 이 두 개념을 제대로 알면 언제 인덱스를 만들고, 언제 만들지 말아야 하는지 정확히 판단할 수 있다.핵심 개념 이해하기카디널리티 (Cardinality)카디널리티는 컬럼에 존재하는 서로 다른 값(고유값)의..

개요Next.js를 공부중이다. 프로젝트 생성시에 인터렉티브하게 물어보는 옵션들의 의미를 Claude의 도움을 받아서 정리해보았다.생성하기생성명령npx create-next-app@latest 명령어는 다양한 옵션을 CLI 상호작용 없이 미리 지정할 수 있다. 앱 이름, 템플릿, 각종 설정 옵션을 사전에 지정하는 방법을 체계적으로 정리해본다.기본 구조npx create-next-app@latest [options]주요 옵션 정리옵션 설명 예시--example 또는 -e특정 예제 템플릿 사용-e with-supabase-e https://github.com/사용자/리포--tsTypeScript 사용--ts--no-tsTypeScript 미사용--no-ts--tailwindTailwind CSS 포함--t..

개요모던 소프트웨어 엔지니어링 을 읽는데 본질적인 복잡성과 우발적인 복잡성 이야기가 나왔다. 도메인 주도 설계 관련 책을 읽으며 보았던 표현으로 기억해서, 이 참에 내 걸로 만들기위해 간단 정리해둔다.어디서 나온 말인가?“본질적 복잡성(essential complexity)” 과 “우발적 복잡성(accidental complexity)” 이라는 개념은 프레데릭 브룩스(Frederick P. Brooks) 가 1986년에 발표한 유명한 논문 「No Silver Bullet: Essence and Accidents of Software Engineering」 에서 처음 나온 개념이다. 논문은 소프트웨어 개발에 “마법 같은 획기적 해결책(silver bullet)” 은 없다고 주장한다. 다들 많이 들어본 표현..

개요최신 컴파일러는 최신 하드웨어에서 효율적으로 실행되도록 코드를 최적화하는 환상적인 작업을 수행한다. 코드가 단순하고 예측 가능할 때 최적화 기능이 뛰어나며 코드가 복잡할수록 컴파일러의 최적화 기능을 통해 얻을 수 있는 도움은 줄어든다. 대다수 컴파일러 최적화 도구는 코드 블록의 순환 복잡도cyclomatic complexity가 임겟값을 초과하면 최적화 시도를 포기한다.모던 소프트웨어 엔지니어링 p203 책을 읽다가 위 문장이 인상적이라 순혼 복잡도를 정리해본다. 코드가 단순하고 가독성이 좋은 것도 알고, 컴파일러의 최적화 기능도 알고 있었는데 이 둘이 이렇게 연결될 수 있다는 생각을 못했다. 위 문장을 다음과 같이 해석해본다.개발자가 아둥바둥 코드를 최적화하여 성능을 개선하려다 코드가 복잡해지고 가..

개요데이터베이스 인터널스를 읽고 있다. 책에서 소개되는 개념 중에서 처음 알게 되거나 명확히 알지 못했던 개념들을 하나씩 정리해본다.Belady’s Anomaly페이지 교체 알고리즘비유로 이해하기컴퓨터의 메모리는 책상 서랍, 디스크는 사물함, 페이지는 책 한 권이라고 생각해보자.학생은 서랍에 최대 3권의 책을 넣어둘 수 있다.수업 중 선생님이 말한다.“영어책 꺼내자” - 사물함에서 가져온다. 페이지 부재“수학책 꺼내자” - 사물함에서 가져온다. 페이지 부재“과학책 꺼내자” - 사물함에서 가져온다. 페이지 부재“다시 영어책 꺼내자” - 서랍에 있으니 바로 꺼낼 수 있다.“미술책 꺼내자” - 서랍에 없으니 책 한권을 사물함에 넣어두고 가져와야 한다. 페이지 부재이처럼 메모리에 없는 페이지를 디스크에서 불러오..

개요나중에 챙겨보고 싶은 유튜브를 보게되면 링크를 TickTick에 올려두고 짬이 날 때에 챙겨보고는 했었는데 이동욱님의 Slack, Gmail 의 북마크로 TickTick Task 만들기 글을 읽고 이를 자동화해보았다. Zapier를 이용하여 유튜브 좋아요를 누른 영상이 추가되면 이를 트리거로 하여 TickTick의 특정 리스트에 추가하도록 만들었다.Zapier우선은 Zapier 에 계정을 만들어둔다. 무료 요금제로 하더라도 사용에는 큰 무리가 없을 듯 싶다.Zap 을 새로 하나 생성한다.Trigger왼쪽의 15분은 15분마다 유튜브의 특정 플레이리스트에 비디오가 추가되었는지를 확인하고, 추가된 경우 trigger 된다는 것을 의미한다. 오른쪽을 보면유튜브를 트리거로 한다.트리거 이벤트는 특정 플레이리..

- Total
- Today
- Yesterday
- Echo
- github
- backend
- gocore
- MCP
- 영화
- 독서
- Gin
- strange
- bun
- 체호프
- 티스토리챌린지
- notion
- golang
- 독서후기
- API
- 잡학툰
- postgres
- websocket
- go
- 오블완
- agile
- 인텔리제이
- solid
- clean agile
- intellij
- 클린 애자일
- OpenAI
- middleware
- ChatGPT
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |