전체 글230 도메인 주도 설계 정리 - ENTITY, VALUE OBJECT 도메인 주도 설계: 엔티티와 값 객체의 본질복잡한 도메인을 위한 소프트웨어를 설계할 때, 모델을 구성하는 각 요소의 본질을 깊이 이해해야 한다. 도메인 주도 설계(DDD)는 이 과정을 돕는 두 가지 강력한 빌딩 블록, 엔티티(Entity)와 값 객체(Value Object)를 제시한다.1. 엔티티 (Entity): 식별성으로 정의되는 연속적인 삶엔티티의 근본적인 개념은 객체의 생명주기 내내 이어지는 추상적인 연속성이며, 그러한 추상적인 연속성은 여러 형태를 거쳐 전달된다는 것이다.어떤 객체를 그 속성이 아닌, 고유한 식별성(Identity)으로 일차적으로 정의한다면, 우리는 그것을 엔티티라고 부른다. 엔티티의 핵심은 시간이 흘러도 변치 않는 정체성이다.예를 들어 '고객'이라는 엔티티를 생각해보자. 한 고.. 2025. 6. 26. RealMySQL - 인덱스 스캔 방향 1. 인덱스 스캔 방향은 무조건 오름차순으로 이루어지는가?- No, 인덱스는 항상 오름차순으로 정렬돼 있지만 인덱스를 최솟값부터 읽으면 오름차순으로 값을 가져올 수 있다. 최댓값부터 거꾸로 읽으면 내림차순으로 값을 가져올 수 있다는 것을 MySQL 옵티마이저는 이미 알고있다. 2. 인덱스 스캔- 내림차순 인덱스 : 큰 값의 인덱스 키가 B-Tree의 왼쪽으로 정렬된 인덱스- 인덱스 역순 스캔 : 인덱스 키의 크고 작음에 관계없이 인덱스 리프 노드의 오른쪽 페이지부터 왼쪽으로 스캔 - 오름차순 인덱스 : 작은 값의 인덱스 키가 B-Tree의 왼쪽으로 정렬된 인덱스- 인덱스 정순 스캔 : 인덱스 키의 크고 작음에 관계없이 인덱스 리프 노드의 왼쪽 페이지부터 오른쪽으로 스캔 3. 인덱스 역순 스캔이 인덱스 .. 2025. 6. 22. RealMySQL - REAPEATABLE READ REPEATABLE READ란? - REAPEATABLE READ는 MySQL의 InnoDB 스토리지 엔진에서 기본으로 사용되는 격리 수준- MVCC를 위해 언두 영역에 백업된 이전 데이터를 이용해 동일 트랜잭션 내에서는 동일한 결과를 보여줄 수 있게 보장함1. 주요 특징특징설명 동일 쿼리 반복 시 결과 일관성 유지트랜잭션이 시작된 순간의 스냅샷을 기준으로 데이터를 조회한다.Phantom Read 방지MySQL(InnoDB)은 Next-Key Locking을 통해 팬텀 리드를 막는다.Serializable보다 성능이 좋음완벽한 직렬화(Serializable) 수준보다 성능이 높고 동시성도 괜찮은 편이다.Read Committed보다 보수적다른 트랜잭션에서 커밋한 내용도, 트랜잭션 내에서는 보이지 않음. .. 2025. 6. 22. 프로그래머스 Level2 메뉴 리뉴얼 java 풀이 문제 설명레스토랑을 운영하던 스카피는 코로나19로 인한 불경기를 극복하고자 메뉴를 새로 구성하려고 고민하고 있습니다.기존에는 단품으로만 제공하던 메뉴를 조합해서 코스요리 형태로 재구성해서 새로운 메뉴를 제공하기로 결정했습니다. 어떤 단품메뉴들을 조합해서 코스요리 메뉴로 구성하면 좋을 지 고민하던 "스카피"는 이전에 각 손님들이 주문할 때 가장 많이 함께 주문한 단품메뉴들을 코스요리 메뉴로 구성하기로 했습니다.단, 코스요리 메뉴는 최소 2가지 이상의 단품메뉴로 구성하려고 합니다. 또한, 최소 2명 이상의 손님으로부터 주문된 단품메뉴 조합에 대해서만 코스요리 메뉴 후보에 포함하기로 했습니다.예를 들어, 손님 6명이 주문한 단품메뉴들의 조합이 다음과 같다면,(각 손님은 단품메뉴를 2개 이상 주문해야 하며, 각.. 2025. 5. 3. 6시간 만에 바이럴 웹사이트 구축? AI와 함께한 '바이브 코딩' 경험 공유 최근 인턴십을 마치고, 오롯이 제가 만들고 싶은 서비스를 구현해 보고자 흥미로운 도전을 시작했습니다. 바로 AI를 활용해 놀라운 속도로 아이디어를 현실화하는 바이브 코딩(Vibe Coding)'과 이를 활용한 창업입니다.단시간에 많은 사람들에게 즐거움을 주고 빠르게 확산될 수 있는 프로젝트를 목표로, 최근 유행하는 'Italialin brainrot' 밈을 활용한 인터랙티브 웹사이트를 기획했습니다. 놀랍게도 Cursor AI와 Next.js, firebase를 활용하여 단 6시간 만에 핵심 기능을 포함한 웹사이트를 완성하는 경험을 했습니다.처음에는 핵심 Proof of Concept(POC) 구현을 목표했지만, AI의 압도적인 개발 속도 덕분에 운세, 랭킹, 커뮤니티 기능까지 추가하여 완성도를 높일 수 .. 2025. 5. 2. 프로그래머스 Level2 미로 탈출 java 풀이 문제 설명1 x 1 크기의 칸들로 이루어진 직사각형 격자 형태의 미로에서 탈출하려고 합니다. 각 칸은 통로 또는 벽으로 구성되어 있으며, 벽으로 된 칸은 지나갈 수 없고 통로로 된 칸으로만 이동할 수 있습니다. 통로들 중 한 칸에는 미로를 빠져나가는 문이 있는데, 이 문은 레버를 당겨서만 열 수 있습니다. 레버 또한 통로들 중 한 칸에 있습니다. 따라서, 출발 지점에서 먼저 레버가 있는 칸으로 이동하여 레버를 당긴 후 미로를 빠져나가는 문이 있는 칸으로 이동하면 됩니다. 이때 아직 레버를 당기지 않았더라도 출구가 있는 칸을 지나갈 수 있습니다. 미로에서 한 칸을 이동하는데 1초가 걸린다고 할 때, 최대한 빠르게 미로를 빠져나가는데 걸리는 시간을 구하려 합니다.미로를 나타낸 문자열 배열 maps가 매개변수.. 2025. 4. 30. 이전 1 2 3 4 ··· 39 다음