본문 바로가기

아직 카테고리 미정13

RDB의 FTS 를 적용하면서 부딪힌 부분들 개요기준 Postgres 기준으로 ts_vector, ts_query 를 활용하여 Full Text Search 을 실행할 수 있음.함께 읽어보면 좋은 내용 - RDB 의 FTS(Full Text Search) 이해하기 RDB 의 FTS(Full Text Search) 이해하기RDB 의 FTS(Full Text Search) 란?배경이 글의 목적은 FTS(Full Text Search) 로 RDB(Relational Database) 적당한지 판단합니다. 검색엔진으로서 대부분 ElasticSearch 를 사용하는데요. 간단한 검색엔진으로서는 다happy-coding-day.tistory.com  배경SpringBoot와 JPA 를 활용하여 개발하는 경우가 다수이다.흔히 Repository 를 활용한 영속.. 2024. 9. 16.
RDB 의 FTS(Full Text Search) 이해하기 RDB 의 FTS(Full Text Search) 란?배경이 글의 목적은 FTS(Full Text Search) 로 RDB(Relational Database) 적당한지 판단합니다. 검색엔진으로서 대부분 ElasticSearch 를 사용하는데요. 간단한 검색엔진으로서는 다소 과한 오버스펙일 수 있어, 조사하는 과정에서 PostgreSQL, MySQL 도 Full Text Search 기능이 있어 기술조사를 진행했습니다. 그 과정에서 RDB 의 FTS 에 대해서 이해하는 것을 목적으로 합니다.아래 내용은 postgresSQL 기준으로 설명합니다. 왜냐하면 MySQL 보다 기본으로 제공하는 기능이 좀더 많습니다.비교 기준PostgreSQLElasticSearch일반 검색 (LIKE/정규 표현식)아키텍처 및 .. 2024. 9. 16.
성능테스트 k6 결과 내역을 이해해보자. 공식 사이트 중에서도 k6 의 결과를 설명해주는 페이지 를 보고 이해하고자 했습니다. data_received..............: 148 MB 2.5 MB/s data_sent..................: 1.0 MB 17 kB/s http_req_blocked...........: avg=1.92ms min=1µs med=5µs max=288.73ms p(90)=11µs p(95)=17µs http_req_connecting........: avg=1.01ms min=0s med=0s max=166.44ms p(90)=0s p(95)=0s http_req_duration..........: avg=143.14ms min=112.87ms med=136.03ms max=1.18s p(90)=1.. 2021. 7. 9.
Mock 객체란 무엇일까? 왜 써야될까? 아래 내용은 위 책에서 말하는 4장 TDD with Mock 에서 내용을 발췌했습니다. TDD를 공부하면서 Mock 이라는 용어는 너무나도 많이 나오고, 실제로 테스트 프레임워크를 사용하면 Mock 객체를 많이 사용되게 된다. 그놈의 Mock! Mock 객체를 사용해서, 테스트를 용이하게 만들수 있고, 아직 만들어지지 않은 개념을 활용해 내가 만들고자 하는 객체를 구체화시킬 수 있는 도구라는 사실은 알았다. 그러나 문제점은 여기에 있었다. 주로 Mockito 프레임워크를 사용하는데, 각 Mock 객체가 어떤 역할을 하는지 이해하기 어려웠다. 더하여, 어떻게 활용해야 하는지도, 이해하기 어려웠다. 이번 장에서는 다시한번 Mock을 써야하는 이유, 그리고 Mock 객체가 어떤 역할을 하는지, 마지막으로 어떻.. 2021. 3. 11.
TDD 좀 더 잘하기 아래 내용은 고품질 쾌속개발을 위한 TDD 3장 내용을 발췌했습니다. TDD의 한계 이번 장에서는 TDD의 한계 라는 주제로 내용만 다룰까 합니다. 동시성 문제 동시성이 필요한 테스트케이스의 경우, 작성하는데는 문제가 어렵지 않다. 그러나, 테스트 자체를 무결하게 유지하기가 매우 어렵다. 상식적으로 파악하기 어려운 불규칙한 문제가 적지 않게 발생하기 때문이다. 현재 유일한 해결책을 제시하기는 어렵지만 다양한 방식으로 해결한다 그러나 여전히 명확하게 테스트할 수 있는 것은 없는 것 같다. 접근제어자(private/protected 메서드) 테스트할 항목의 접근 제한에 대한 논의. private으로 되어 있는 메소드는 일반적인 방법으로는 테스트가 불가능하다. 그러나, private으로 되어 있어서 접근이 어.. 2021. 3. 11.
테스트 주도 개발 입문해보기 고품질 쾌속개발을 위한 TDD 실천법과 도구 - 1장 내용을 스스로 이해하기 위해 작성하는 글입니다. 1.1 일반적으로 우리의 개발은 다음과 같다. 우리 개발자 자신의 두뇌는 명석하기때문에 개발을 하면서, 문제영역을 발견한다. 문제영역을 발견하고, 이를 해결하기 위해 '기능을 구현' 하고, 일정 시간이 지나면 구현의 '검증' 을 위한 테스트를 수행합니다. 대표적인 방식은 "콘솔에 값 찍어보기?" 위와같이 했을 경우, 주의해야 될 부분으로 문제의 해결 유무 판단을 우리의 두뇌가 하려고 한다는 것이다. 여기서 문제점이 발생한다. 사람의 머리란 간사해서- 상황에 따라서 다른 반응을 하고, 효율도 그때그때 다르다. 고전적인 개발 방식에서의 문제점은 다음과 같다. 1. 특정 모듈의 개발 기간이 길어질수록 개발자의.. 2021. 3. 9.
TDD로 XUnit 만들어 내기 - 1 Java 로 XUnit 프레임워크를 잘 만들수 있을지 모르겠습니다. 아직까지 TDD에 대한 자신감이 붙지 않았다는 증거겠죠? 천천히 수련해봅시다. youtube에 토비님이 Java로 만든 XUnit 이 있지만, 나 스스로 천천히 수련해봅시다. 먼저 요구사항을 나열하면 아래와 같습니다. 1. 테스트 메소드 실행 2. SetUp 메서드 실행 3. TearDown 메서드 실행 4. 테스트 결과 수집 ▶Intellij Test 실패 발생시 No tests found for given includes 이 발생할 경우 @Test public void aaaaa() throws Exception { WasRun wasRun = new WasRun(); assertFalse(wasRun.isRun); wasRun.ru.. 2021. 2. 25.
테스트 더블을 강력한 위력을 이해해보자. 아래 내용은 Effective Unit Testing - 라쎼 코스켈라 에서 발췌한 내용으로 이루어져 있습니다. 0. 들어가기 Stub과 Dummy는 왜 태어났을까? 이 둘의 처음 등장된 가장 큰 이유는 제품에 다른 제품이 준비되기 전까지 대신 사용할 용품이 필요했기 때문이다. 그러나 오늘날, Stub과 Dummy는 처음 나왔던 목적보다, 테스트 추종자에 의해 쓰음새가 다양해졌다. 다양한 테스트 전용 장치가 만들어지면서, 테스트 대상 코드를 격리 속도 개선 예측 불가능한 요소 제거 특수한 상을 시뮬레이션 감춰진 정보를 얻어내는 용도 이같이 목적은 비슷하면서도 다른 객체를 사용하는데 그 전부를 테스트 더블이라고 한다. 그럼 테스트 더블은 우리에게 어떤 득이 있을까? 1. 테스트 더블의 목적 "세상이 변하길.. 2020. 12. 28.
[마틴파울러]GivenWhenThen 번역본 원본은 아래 링크를 클릭해주세요. bliki: GivenWhenThen a bliki entry for GivenWhenThen martinfowler.com Given-When-Then은 SpecificationByExample을 사용하여 시스템의 동작을 지정하는 테스트를 나타내는 스타일입니다 . BDD ( Behavior-Driven Development)의 일부로 Daniel Terhorst-North 와 Chris Matts가 개발 한 접근 방식입니다 . [1] Cucumber와 같은 많은 테스트 프레임 워크에 대한 구조화 접근 방식으로 보입니다. 4 단계 테스트 패턴 의 재구성으로 볼 수도 있습니다 . 기본적인 아이디어는 시나리오 (또는 테스트) 작성을 세 부분으로 나누는 것입니다. Given .. 2020. 12. 27.
HTTP Caching에 대해서 좀 이해해보자!!! 이번에 HTTP Code 중 304 에러 코드에 대해서 이해하는 과정에서 WebCache에 대한 정보를 일부 활용했다. 304 에러 코드는 웹 캐시에 저장된 데이터가 같은 데이터를 Get하려고 한다면, 이를 웹 브라우저가 변경되지 않은 데이터라는 것을 인지한다. 그럼 WebCache에 대해서 한꺼풀씩 이해해봅시다. HTTP Caching이 뭘까? 우리는 일반적으로 웹서버에 정적 파일을 다운로드 받습니다. 예를 들어, '/login' page 라고 했을 때, 로그인 페이지에는 css, js, html 등의 파일을 가져와야 합니다. 이때, http, css, js 등 여러 HTTP요청을 만드는 것이 일반적입니다. 그러나, 이제 이러한 페이지를 매우 자주 요청하면 네트워크 트래픽이 많이 발생하고 이러한 페이지.. 2020. 11. 14.
HTTP 304 Not Modified의 이해 및 예제(with. spring) 1. HTTP 상태 코드 1.1 응답 메시지 & 상태라인 After receiving and interpreting a request message, a server responds with an HTTP response message. 요청 메시지를 받고 해석한 뒤에, 서버는 HTTP 응답 메시지를 보낸다. Example: HTTP/1.1 304 Not Modified Date: Fri, 07 Sep 2012 14:51:43 GMT Server: Apache/2.2.22 (Win32) mod_jk/1.2.37 Connection: Keep-Alive Keep-Alive: timeout=5, max=94 ETag: "d00000001f216-1e7-4c908f1fc4d6e" The first line o.. 2020. 11. 14.
Richardson Maturity Model (번역본) 아래 내용은 마틴 파울러 블로그에서 가져온 글을 번역했습니다. steps toward the glory of REST REST 접근 방식의 주요 요소를 세 단계로 나누는 모델 (Leonard Richardson이 개발). Resources, http Verb 및 hypermedia controls을 소개합니다. 최근에 저는 Rest In Practice의 초안을 읽었 습니다. 동료 부부가 작업하고있는 책입니다. 그들의 목표는 기업이 직면하는 많은 통합 문제를 처리하기 위해 Restful 웹 서비스를 사용하는 방법을 설명하는 것입니다. 책의 핵심은 웹이 정말 잘 작동하는 대규모 확장 가능한 분산 시스템의 존재 증명이라는 개념이며, 우리는 통합 시스템을 더 쉽게 구축하기 위해 아이디어를 얻을 수 있습니다. .. 2020. 10. 4.
회사에서 그렇게 쓰는 VPN 이해해보자. 최근 코로나의 영향으로 VPN ? 특히 회사에서는 FortiClient 라는 VPN Client를 사용합니다. 그런데, VPN이라고 하면 뭔가, 우회해서 무엇을 한다. 라고 생각만 들 뿐, 실제로 어떻게 동작되는지 모르겠다. 한번 이해하기 위한 시도를 해보자. VPN의 약자부터 생각해보자. VPN(Virtual private Network -가상 사설망) VPN 이전에는 PN(Private Network) 라는 용어를 사용했었다. 그럼 PN이란 무슨말일까? 즉, 전용으로 사용하는 망(전용망)이라 할 수 있다. 가상사설망? 이란 가상 전용망(선)을 의미합니다. 집 - 회사 로 이어지는 전용망이 있다고 생각하면 됩니다.(Private Network) 망이라는 어떤 Mash가 있다면, 그 중앙에는 선이 있어야.. 2020. 8. 22.