일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Java
- 서비스스펙
- code refactoring
- spring cloud netflix zuul
- BFS
- netflix eureka
- 탐색
- docker
- unittest
- zuul
- spring cloud netflix eureka
- Dynamic Routing
- container image #docker #layer #filesystem #content addressable
- Eureka
- netflix
- unit
- Spring Data Redis
- spring cloud
- spring cloud netflix
- microservice architecture
- test
- springcloud
- 단위테스트
- 설계
- reactive
- api-gateway
- dfs
- java #jvm #reference #gc #strong reference
- forkandjoinpool #threadpool #jvm #async #non-blocking
- Today
- Total
목록Tech (8)
phantasmicmeans 기술 블로그
3.1 단위 테스트 구성 방법 AAA 패턴 사용 우리가 흔히 사용하는 give/when/then 과 동일하고, 모든 테스트가 단순하고 균일한 구조를 갖는 데 도움이 된다. 준비 구절: SUT 와 해당 의존성을 원하는 상태로 만듬 실행 구절: SUT 메소드 호출 및 준비된 의존성 전달 검증 구절: 결과 검증 (반환 값이나 협력자의 최종 상태, SUT 가 협력자에 호출한 메소드 등으로 표시) 여러개의 준비, 실행, 검증 구절을 피하라 여러 개의 준비, 실행, 검증 구절은 테스트가 너무 많은 것을 한 번에 검증한다는 의미이다. 각 동작을 고유의 테스트로 나눠라 통합테스트의 범주 - 통테에서는 속도를 높이기 위해 이렇게 해도 괜찮다. 테스트 내 if 문 피해라 if 문은 테스트가 한 번에 너무 많은 것을 표시 ..
업무로 프리미엄 컨텐츠 허브 서버개발을 진행하며, 작은 스펙이지만 기억에 남았던 내용이 있어서 가볍게 공유 드리고자 합니다. mongodb를 사용하고 있기에 이전 글/다음 글은 아래 용어와 동일하게 이해해주시면 됩니다. 이전 글 == lte(less than equal), lt(less than) 다음 글 == gte(greater than equal), gt(greator than) 스펙 설명 컨텐츠 엔드 아래 사진처럼 각 컨텐츠 엔드 하단에는 동일 카테고리의 컨텐츠 목록을 노출하는 영역이 존재하구요. 노출 세부 스펙은 아래와 같습니다. 현재 컨텐츠는 가운데로 두고 앞(다음 글) 뒤(이전 글)의 컨텐츠 노출 총 N개 노출 e.g.) 5개 노출인 경우 -> 다음 글 2개 / 현재 컨텐츠 / 이전 글 2개..
약 1년간 이곳저곳에 약 500건의 unit test (+ 약간의 통합 테스트)를 작성했습니다. 테스트에 대한 깊은 지식은 아직도 없고.. 아래 정도에 도달한 것 같습니다. 이제 유닛 테스트를 어떻게 작성해야 하는지 알겠다. 직접 겪어보니 왜 작성해야 하는지 이해가 된다. 왜 테스트 작성이 어려운지 알겠다. 현재의 제가 지금까지 테스트를 작성해오며 느꼈던 점 / 생각했던 것들을 적어봤습니다. 이 생각들은 앞으로도 계속 변할 수 있을 것 같기도 해서 몇 년 후 재밌게 읽어볼 수 있을 것 같습니다. 목차는 아래와 같습니다. 1. 계층 짬뽕 지름길을 피해 보자 2. Spring Data Repository 너 이놈 .. 3. 넓은 의미의 서비스 4. 테스트가 없는 프로젝트에 신규 테스트 작성은? 5. 현재보다..
CDC(change data capture)는 데이터베이스 내 데이터에 대한 변경을 식별해 후속 처리를 자동화 하는 기술이자 개념이고, 단어 그대로 데이터의 변경본을 캡쳐한다 로 이해하면 더 직관적입니다. 보통 변경본 캡처 후 데이터 가공 및 타 데이터베이스로의 적재가 필요한 환경에서 주로 사용되고, 이벤트 기반의 아키텍처를 구성할때에도 자주 사용되는 것 같습니다. 이번 글에서는 MongoDB를 기준으로 변경본 캡쳐 이벤트를 subscribe 하는 방법 중 아래 2가지를 간단하게 공유 드리고자 합니다. Debezium connector for MongoDB MongoDB Change Streams Debezium Kafka Connector CDC 오픈소스 중 가장 많이 사용 되는 것이 Debezium ..
version 4.0 기준 OS Memory 페이지 캐시와 힙 공간 구성 후에도 RAM 공간이 어느정도 남아야함 → 없으면 디스크로 swapping 되어 성능에 영향 1GB가 좋은 출발점이라고 함 Lucene index cache 인덱싱 기능 중 일부를 apache lucene으로 사용함. 명시적으로 지정해주지 않으면 native-btree index 사용 (apache lucene은 사용 안함) 인덱스가 메모리에 캐시 되도록 하여 성능 최적화 Page Cache 페이지 캐시는 Neo4j data와 native index를 캐시하는데 사용 됨. 디스크 액세스 비용 감소시킴. Neo4j 가 페이지 캐시에 사용할 수 있는 메모리 크기는 dbms.memory.pagecache.size로 지정 가능 실제 데이터..
분산 스트리밍 플랫폼 카프카 Pulish and subscribe to streams of records, similar to message queue or enterprise messaging system. Kafa's capabilities Kafka는 하나 이상의 서버에서 클러스터로 실행됨 Kafka cluster는 topic이라 불리는 category내에 streams of records를 저장함 각 record는 key, value, timestamp로 구성됨 Kafka has five core APIs The Producer API application이 하나 이상의 Kafka topic으로 stream of records를 publish 하도록 함 The Consumer API applica..
goroutine이란 Go루틴은 Go Runtime 이 관리하는 Logical Thread이다. Go에서 "go" 키워드를 사용해 함수를 호출하면, Runtime시 새로운 goroutine을 실행한다. goroutine은 asynchronusly하게 routine을 실행한다. 따라서 여러 코드를 concurrent하게 실행하는데 사용된다. goroutine은 OS Thread 보다 훨씬 가볍게 Async Cocurrent 처리를 구현하기 위해 만든 것이다. 이는 기본적으로 Go Runtime이 자체 관리한다. Go Runtime 상에서 관리된느 작업단위인 여러 goroutine은 종종 하나의 OS Thread 1개로도 실행되곤 한다. 즉, goroutine은 OS Thread와 1대1로 매핑되지 않고, ..
RSocket은 Websocket, tcp와 같은 byte stream transport protocol 위에서 동작하는 binary protocol이자 reactive stream을 지원하는 application protocol입니다. Netflix에서 시작된 rsocket은 msa 환경에서 오버 헤드가 적은 프로토콜을 통해 http를 대체하기 위해 개발 되었고, 현재 netifi / facebook / pivotal에 의해 support 되고 있는 오픈 소스입니다. 여기서는 RSocket에 대해 다음과 같이 설명하고 있습니다. RSocket is a next-generation, reactive, layer 5 application communication protocol for building to..