단위테스트 책에서 비지니스 로직에서 의존 객체들과의 커뮤니케이션하는 코드를 완전히 분리해서 별도의 객체가 수행하도록 하고 비지니스로직을 담은 객체는 이렇게 하면 핵심 비지니스 로직에 대한 테스트 코드를 작성하고 유지보수하기 쉬워진다. 실행 성능도 좋아지며 중요한 비지니
“테스트 코드가 개발 주기에 통합되어 있어야 한다. 실제로 사용되는 테스트만 가치가 있다. 사용되지 않는 테스트는 의미가 없다.”
계획에 없었는데 AWS 서밋 둘째 날도 참석하게 되었다. 아무것도 준비해오지 않아 급히 서울에 숙소를 잡고 다이소에서 속옷과 양말을 구매했다. 티셔츠는 오늘 받은 굿즈로 해결. 하루 더 남길 잘했다고 생각한다.한 발표에서 런타임 프로세서를 Intel 계열에서 AWS의
Stream의 parallel() API를 사용하면 쉽게 병렬 작업을 구현할 수 있습니다. 병렬 스트림은 내부적으로 common ForkJoinPool을 사용하고 디폴트로 CPU 코어 개수만큼의 쓰레드를 생성합니다. CompletableFuture을 사용해서 병렬
강의 전반적으로 모르는 용어, 기술들을 많이 접하게 되었다. 후기를 쓰고 싶었는데 그 날의 강의만 듣고 확실히 이해하지 못한 것들이 많아 후기를 블로그에 남기기가 곤란하다. 그래서 인상깊은 몇 가지만 기록으로 남겨본다.프랑스(유럽 서머타임 적용 국가)는 3월 마지막주
서버 프로그램을 개발하고 운영하다 보면 서버의 응답이 지연되는 문제를 만날 수 있습니다. 다양한 문제의 원인이 있을 수 있지만, 이 글에서는 서버 외부에서 발생하는 문제의 원인에 집중해 보려 합니다. 모든 설명은 TCP 프로토콜 위에서 동작하는 애플리케이션이라 가정하겠
네티(Netty) 프레임워크를 사용해 대용량 파일을 처리할 수 있는 서버를 구현했습니다. 그리고 클라이언트에서 대용량 파일(1GB) 패치를 요청하고 패치된 파일이 로컬에 저장되기 까지의 시간을 측정함으로 서버의 성능을 측정해 보았습니다. 초기 서버 구현에서는 파일 패치
UDP와 TCP 프로토콜은 여러가지 차이점이 있지만 프로그래밍을 할 때 필수적으로 이해해야 할 숨겨진 개념이 있습니다. 그것은 UDP는 메시지를 기반(Message-oriented)한 프로토콜이고 TCP는 스트림을 기반(Stream-oriented)한 프로토콜이란 점입
아래와 같은 코드에서 try 블럭 내에서 생성되어 BufferedInputStream에게 전달되는 FileInputStream 인스턴스는 try-with-resources 문에 의해 자동으
JPA 영속성 관리에 대해 공부했다. 예전에 팀에서 백엔드 엔지니어(DB를 다루는)들이 모여서 이것과 관련해서 옥신각신 하던 일이 생각났다. 그때 회사 코드에서 하나의 트랜잭션 내에서 엔티티를 변경할 때 마다 flush를 하고 있었는데 영희(가칭)가 매번 flush를
네티 프레임워크를 사용해 간단한 파일 서버를 구현하고 있습니다. 파일 서버의 성능을 테스트하기 위해 다양한 크기의 파일 패치(Fetch)를 서버에 요청하고 패치된 파일을 로컬 스토리지에 저장하기 까지의 시간을 측정했습니다. 테스트는 서버와 클라이언트를 동일한 컴퓨터에
하나의 큰 기능을 구현하면서 단계 단계 내부 구현을 테스트 코드로 만들어 검증해 보았다. 확실히 큰 덩어리를 테스트 하는 것 보다 일이 단순하고 점진적으로 완성해 나갈 수 있어서 좋다. 그런데 나중에 기능 구현을 완성하고 보니 잠깐 몇 일 사이에 내부 구현 방향이 처음
문제 자체와 제약사항을 처음부터 제대로 이해하기 위해 차분히 문제를 읽어나갔다. 문제를 잘못 이해한 실수는 이번에 없었다. 잘한 부분이다.해결책을 설계할 때 선언적으로 큰 그림을 먼저 그려나갔는데 굉장히 좋았다. 다만
내 커리어는 어떤 면에서 내가 할 수 있는, 내 손 안에 있는 일들의 연속이었다. 내가 할 수 없는 내 손 밖 일들을 지나치게 생각할 때 걱정이 생겼고 때때로 두통을 가져왔다. 새로운 것들을 시도하되 지금 상황에서
지난 몇 년 동안 네티 프레임워크를 사용하여 우주 지상국 소프트웨어를 개발했습니다. 개발을 진행하면서 저와 동료들이 네티의 특징을 제대로 이해하지 못해 실수 했던 몇몇 경험들이 있는데 그 경험들을 바탕으로 네티의 중요한 구조적 특징들에 대해 나누어 정리해 보려고 합니다
1. “Hello World”로 간단히 빠르게 사용법 익히기 2. 서비스를 만들며 만나는 문제를 깊이 있는 학습 가이드 삼기 3. 테스트 코드로 분명하게 이해하기
계속해서 1시간 이내에 문제 해결이 안되었다. 오랜 시간 고민하고 학습하며 문제를 해결했다. 처음 문제에 접근하며 몇몇 복잡한 조건들이 생각났는데 이미 문제에서 제약 조건을 주고 있었다. 한 번 문제를 읽는 것으로 완
자바의 인터럽트 기능(Thread.Interrupt())을 사용하면 Blocking 동작이 있는 대상 쓰레드의 동작을 안전하게 중단시킬 수 있다. 그러나 인터럽트 기능은 요청자 주도로 대상 쓰레드 실행을 임의로 중단시킬 수 있는 기능이 아니다. 인터럽트는 단지 대상 쓰