전체 글156 서로의 Context를 파악하자 같은 프로덕트를 다루는 조직이라도 내부적으로는 서로 다른 성격의 이해관계자 그룹이 생기기 마련이다. 예를 들어 사업 부서에서는 많은 사용자가 사용할 수 있는 서비스를 만들고자 할 것이고, 개발 부서에서는 확장성 있는 설계 및 코드, 안정적인 서비스를 구축하는 것이 그들이 주로 원하는 바일 수 있다. 마케팅 부서라던가 보안 부서와 같이 부서가 여러 갈래로 더 나뉘어져 있다면 각 부서의 요구나 목표도 그 만큼 더 다양할 것이다. (Cross Functional 한 소규모의 팀이어도 결국 여러 직군의 사람이 모이다보면 각자 원하는 바가 다를 수 있다고 생각한다) 또한 이해관계자는 내부에만 있는 것은 아니다. 서비스를 이용하고 이를 위해 금액을 지불하는 고객 또한 중요한 이해관계자 중 하나다. 하나의 프로덕트라.. 2021. 7. 10. Spring JPA Querydsl 세팅 (with Kotlin) Spring Data JPA를 사용한 Spring Boot 프로젝트 기반으로 코드를 작성할 때 Command 작업은 큰 문제는 없지만 집계와 같은 Query 성 작업은 JPA 로는 어느정도 한계가 있다. JPQL을 사용할 순 있겠지만 String base로 코드가 작성되기 때문에 작업을 하면서 실수가 날 여지가 있고 직접 실행하지 않는 이상 이 실수를 알기 힘든 경우가 있다. Querydsl 를 사용하면 이러한 JPQL의 단점을 보완할 수 있다. Querydsl 에서 생성해준 컴파일 된 코드 기반으로 쿼리를 작성하기 때문에 일단 쿼리 작성 자체가 매우 쉬워지고 컴파일 시점에서 오류 또한 찾을 수 있다. 이번 포스팅은 Kotlin 기반의 Spring Boot 프로젝트에 JPA 기반 Querydsl 을 세팅.. 2021. 6. 7. MongoDB Index MongoDB Index Index와 B-Tree MongoDB는 indexing 알고리즘으로 B-Tree를 사용한다. B-Tree는 정확한 일치, 범위 조건, 정렬, prefix 일치 등의 다양한 쿼리를 용이하게 처리하게 해준다. 키가 추가되거나 삭제되더라도 밸런스된 상태를 계속유지한다. Index 규칙 index는 도큐먼트를 가져오기 위한 필요한 작업량을 많이 줄인다 (Index를 적절하게 걸면 Full scan을 하지 않아도 된다) (a, b) 인덱스가 있다면 a 인덱스에 대해서는 중복이고 b에 대해서는 중복이 아니다. 복합 인덱스에서 키의 순서는 매우 중요하다 복합 인덱스 복합 인덱스에서는 순서가 중요하다. (제조사 1, 가격 1) index를 건 경우 Q: 낮은 가격 순으로 정렬하고 싶을 때 (.. 2021. 6. 5. MongoDB Performance Tips MongoDB Performance Tips MongoDB Explain Query query를 실행할 때 성능을 위해선 해당 query에 index가 걸리는지 확인하는 것은 중요하다. index를 생성한 뒤 해당 index를 제대로 타는지 확인하기 위해서 query에 explain()을 추가하여 query를 분석한다. explain은 query에 대한 자세한 정보를 보여준다. # index 생성 전 mongo-repl:PRIMARY> db['aggregate-example'] .find({ type: 'mac' }) .explain('executionStats'); { "queryPlanner" : { "plannerVersion" : 1, "namespace" : "chris.aggregate-exa.. 2021. 6. 5. Graph Number of Islands 이 문제는 크게 2가지 흐름으로 처리한다. 첫 번째는 grid의 모든 cell을 scan 하면서 땅(1)을 찾는 것이다. 그리고 땅이 나오면 인접한 땅이 있는지를 확인하고 해당 땅이 속한 섬을 확인한다. 아래 좀 더 자세하게 설명한다. 먼저 땅을 발견하면 확인한 땅이라고 체크를 하기 위해 해당 cell의 값을 2로 변경한다. 그리고 해당 cell과 인접한 cell에 땅이 있는지를 확인한다. 이를 상좌하우 순으로 확인한다고하면 위쪽 cell은 grid 범위를 벗어나고, 왼쪽 cell은 땅이 아니다. 아래 cell은 땅이므로 해당 cell을 확인된 땅이라고 체크한다. 그리고 새로 확인된 땅이라고 체크해놓은 cell 인접 해당 cell의 윗 cell은 확인된 땅이므로 다시 작업.. 2021. 6. 4. Rest Assured 테스트 시 redirect 막기 Rest Assured 를 사용하여 서버에 요청을 보낼 때 Spring Web application 에서 Found 와 같은 Redirect 응답을 하면 Controller 리턴하는 Redirect 응답이 오는 것이 아니라, Redirect 처리가 되어 Location header의 URL로 요청을 보낸 응답이 와서 assertion이 실패되는 케이스가 있었다. 에를 들어 Controller 에서 아래와 같이 Redirect 에 대한 ResponseEntity 를 응답할 때 Rest Assured 에서는 https://devs0n.tistory.com/ 에 대한 응답을 받는 것이다. ResponseEntity .status(HttpStatus.FOUND) .location(URI.create("https.. 2021. 6. 3. 이전 1 ··· 18 19 20 21 22 23 24 ··· 26 다음