DEV
-
Test DoubleDEV 2023. 12. 2. 19:33
테스트 대역 = Test Double 개발하다 보면 여러 객체들 간 의존성이 발생 → 의존성이 단위 테스트를 어렵게 만듦 → 진짜 객체는 느리고 자원을 많이 사용하기 때문에 → 실제 객체를 대신할 수 있는 객체가 필요 → 가짜객체 생성 ⇒ test double (테스트 대역) 💡 test double을 mock이라고 말하는 경우도 있지만, mock은 좁은 의미로 test double의 한 종류, 넓게는 테스트 더블을 의미하기도 한다. 대역(test double)의 종류 stub, fake, spy, mock 역할을 명확히 나누는 것이 애매할 경우가 있고, 서로의 특성을 조금씩 포함 input & output 입력 → 논리 → 출력 모든 프로그램은 입력 → 출력의 흐름으로 이어지는데, 입출력의 종류에는 직..
-
Dependency MechanismDEV 2023. 12. 2. 11:44
maven, gradle dependency tree 아래와 같은 커맨드로 볼 수 있긴 하지만,, mvn dependency:tree gradle dependencies 좀 더 편하게 볼 수 없나? view dependencies as a diagram intellij 다이어그램 형태로 볼 수 있는 bundled plugins를 제공한다. maven gradle ultimate에서만 가능하다. 😓 Maven Extension, Gradle Extension bundled plugins Dependency Mechanism maven의 핵심 기능은 종속성 관리인데, 같은 라이브러리인데 여러버전이 발견 될 경우 어떤 버전을 선택할지 결정하는 메커니즘을 가지고 있다. https://maven.apache.or..
-
slf4j, facade, TDDDEV 2023. 12. 2. 11:13
slf4j log4j 취약점 사태로 인해 로깅 라이브러리들을 살펴보다가.. slf4j를 쓰면서 단 한번도 f의 의미에 대해 생각해보지 않음을 깨달음. Simple Logging Facade For Java facade = 외관, 파사드 패턴의 그 파사드 로깅 라이브러리의 인터페이스 역할 SLF4J가 인터페이스화 되어있기에, SLF4J를 의존하는 클라이언트 코드에서는 실제 구현을 몰라도 됨 의존관계 역전 원칙(dependency inversion principle) spring-boot-starter-web > spring-boot-starter-logging에 기본적으로 logback 구현체가 포함되어 있기 때문에 logback을 기본으로 사용 Facade pattern 파사드 패턴은 단순화된 인터페이스..
-
Elasticsearch Shard & 성능DEV 2023. 12. 2. 10:57
Elasticsearch 샤드의 개수에 따른 색인(index)과 검색(search) 성능에 관한 이야기. Cluster 하나 이상의 노드로 구성 Node 단일 ES인스턴스 master node, data node 서버별 1개 노드 설정을 추천 Index 문서 모음 shard → lucene index 검색/색인이 병렬로 동작할 수 있도록 데이터를 여러 개의 작은 조각으로 나누는 것. primary shard, replica shard Primary shard index(색인), search(검색) 기본적으로 색인 성능을 위함 인덱스 생성 후, 데이터 생성전에만 shard size 설정 가능 7.x default 1개, 6.x default 5개 Replica shard search 검색 성능을 위함, 언..
-
2022 카카오 공채 코딩테스트 감독을 하면서.. 그리고 TDDDEV 2023. 12. 2. 09:23
21년 9월 카카오 신입 공채 2차 온라인 코딩 테스트 감독을 진행하였습니다. 좀 늦었지만, 이 글은 당시 코딩테스트 감독을 진행하며 느꼈던 점들을 공유하기 위해 작성하였습니다. 코로나19로 인해 온라인 환경에서 비대면으로 테스트가 진행되었습니다. 참가자들은 코딩 테스트 플랫폼에서 문제를 풀고, 감독관은 참가자들의 모니터 화면을 지켜보며 여느 시험 감독관들처럼 부정행위를 파악하거나 시험 중 질문을 받았습니다. 저는 총 8명의 참가자를 감독하였습니다. 문제를 푸는 참가자들의 공유된 모니터를 한자리에서 볼 수 있는 것도 재미있는 경험이었습니다. 각자 다른 방식, 순서로 문제에 접근하기도 하고, 또는 비슷한 방식으로 문제를 해결하지만 사용하는 언어에 따라서도 코드의 구조가 달라지는 것을 보는 것도 흥미로웠습니..