개발
-
Entity에서 PK와 함께 대체키를 사용하는 이유?개발 2022. 7. 4. 02:22
도메인의 Entity에 PK와 동등하게 사용되는 UUID의 랜덤 토큰 기반 대체키를 선언한다. API를 오픈하여 기능을 제공 할 때, Entity 식별자(ex, Long 타입 아이디)가 아닌 대체키를 사용한다. - DDD의 Entity 개념에서 고유한 식별자는 중요한 개념이다. - Entity는 자신의 생명주기동안 형태와 내용이 급격하게 바뀔수도 있지만 연속성은 유지해야한다. (사람은 시간이 지나면서 나이도 들고 많은 것이 변하지만 그 사람 자체는 변하지 않으므로 연속성이 유지된다.) - 변화하는 Entity를 추적하려면 식별성이 부여 되어야되고 식별자는 해당 시스템 내에서 유일하고 변경되어서는 안된다. - 보통 DBMS로 영속성을 관리하는 시스템에서의 Entity 식별자는 Table의 PK와 매핑 되는..
-
Priority Queue & Heap (우선순위 큐 & 힙)개발 2022. 7. 1. 20:01
1. 우선순위 큐 큐는 먼저 들어오는 데이터가 먼저나가는 형식의 자료구조로 중간에 나갈 수 없는 놀이공원 줄이다. 이때 우선 순위 큐는 먼저 들어온 순서대로 데이터가 나가는 게 아니라 우선 순위가 높은 데이터가 먼저 나가는 자료구조로 힙을 이용하여 구현한다. 2. 힙 힙은 우선순위 큐를 위해 만들어진 완전 이진트리 형태의 자료구조로 여러개의 값 중 최댓값 또는 최솟값을 찾아내는 연산이 빠르다. 또한 이진 탐색 트리와 다르게 중복된 값이 허용된다. 최대 힙 : 부모 노드의 키 값이 자식노드보다 크거나 같은 완전 이진트리 최소 힙 : 부모 노드의 키 값이 자식 노드보다 작거나 같은 완전 이진트리 insert(값) : 우선순위 큐에 요소 값을 추가한다. remove() : 우선순위 큐에서 가장 우선순위가 높은..
-
프로젝트 구현 단계에서 권장하는 구현방법개발 2022. 6. 27. 18:52
1. 개발 디자인 문서를 작성한 후 구현을 시작하자 요구사항을 명확하게 파악하고, 비즈니스적인 맥락과 이루고자 하는 바를 파악, 사용할 수 있는 리소스, 인프라 등 제약조건에 맞춰 개발, 설계, 배포, 운영 등이 생각되어야한다. 1) 문제 정의 배경, 필수 조건, 목표, 목표가 아닌 것, 성공과 실패에 대한 평가 지표 2) 해결방안 설계(다이어그램 필수), 구현(기술 스택),, 테스트, 코드리뷰, 모니터링, 보안 3) 배포계획 계획(어떤 유저에게, 단계적으로 ...), 배포(어떻게 배포할 것인가) 4) 타임라인 로드맵(단계별 마일스톤) 2. 테이블 설계를 먼저 하지 말고 핵심 도메인 도출을 먼저하자 - 테이블은 도메인 객체를 영속화하기 위한 그릇 정도의 역할(단지 객체 저장 공간) - 객체끼리 어떤 메시..
-
DDD - 도메인 주도 설계개발 2022. 6. 27. 18:05
도메인 주도 설계에서 레이어 간의 참조 관계는 단방향 의존을 유지하고 계층 간 호출에서는 인터페이스를 통한 호출이 되어야 한다. * 레이어 간 참조 관계 모든 레이어의 중심은 도메인이 되어야한다. 사용자 인터페이스 → 응용(application) 계층 → 도메인 계층 ← 인프라 스트럭쳐 단반향 참조관계를 유지해야하며 예를 들어 사용자 인터페이스의 특정 클래스가 도메인 계층에서 임포트 되고 있다면 이는 참조관계를 지키지 않은 것이라 볼수 있다. - 사용자 인터페이스 사용자에게 정보를 보여주고 사용자의 명령을 해석하는 책임을 가진다. (Controller, Dto, Mapper) - 시스템 외부에서 전달되는 요청을 해석해서 시스템이 처리할 수 있게 해주는 것 - 시스템에서 반환되는 것을 유저의 요청에 맞게 ..
-
좋은 구현이란? - 좋은 코드와 설계를 알 수 있는 4가지 기준개발 2022. 6. 27. 17:26
1. 회사와 조직의 비즈니스 가치를 명확하게 충족시켜야한다. 유저의 경험을 만족시켜야한다. 유저는 뒷단에 어떤 기술을 활용하여 어떤 설계기법으로 프로그램을 만들었는지는 전혀 관심이 없다. 단지 원하는 기능이 동작하고 오류가 없으며 깔끔한 UX를 제공하는지에 관심이 있다. 또한 회사의 비즈니스 목표를 만족시켜야한다. 2. 코드가 잘 읽혀야한다. 코드를 읽고 분석하는 것이 개발을 하는 시간보다 많이 시간을 소요한다. 코드를 읽고 도메인 로직을 파악하기 쉽계 코드를 짜는 것이 낭비될 수 있는 불필요한 리소스를 절약할 수 있는 방법이 된다. 물론 시스템 전체 아키텍쳐, 데이터 플로우 등 코드로 표현할 수 없는 것들은 별도 기술문서로 표현한다. 3. 테스트 코드 작성이 쉬워야한다. 테스트 코드는 신규 기능 구현,..