profile
Software Engineer
태그 목록
전체보기 (336)개발일기(77)토비의 스프링(26)더 나은 코드(24)테스트(21)Netty(21)Java(19)더 나은 테스트(17)How to work(14)trouble shooting(13)생각(13)프로그래머스(11)트러블슈팅(11)코딩테스트(10)network programming(9)회고(9)tcp(9)더 나은 설계(8)커뮤니케이션(8)토비의스프링(8)더 나은 도구(7)git(7)프로덕트 오너(7)agile(6)(6)우주지상국(6)C(6)aop(5)비동기(5)네트워크 프로그래밍(5)2021(5)알고리즘(5)asynchronous(5)TDD(5)junit(5)고민(5)dll(5)읽기모임(5)자세(5)컨퍼런스(4)windows(4)코드리뷰(4)추상화(4)배움(4)독서(4)문제(4)인프콘(4)JNA(4)커리어(4)IntelliJ(4)github(4)매니지먼트(4)wireshark(4)Spring(4)실시간(3)debug(3)협업(3)습관(3)관계(3)학습(3)프로젝트 매니저(3)Telnet(3)awaitility(3)객체지향(3)의존관계(3)네트워크 패킷분석(3)예외(3)Software Engineering(3)2022(3)문제해결연습(3)협력(3)stream(3)test(3)사람(3)연역적(3)데이터(3)오브젝트(3)multithreading(3)Software Enginerring(2)가치(2)사용자(2)마인드(2)문서화(2)주석(2)ci(2)함께자라기(2)TROUBLESHOOTING(2)networking(2)http(2)배포(2)Mockito(2)test case(2)귀납적(2)더 나은 디자인(2)Locale(2)clean architecture(2)문제 해결 연습(2)제품(2)리더(2)디버깅(2)collaboration(2)병렬(2)분석(2)코드로 문제해결 연습(2)cherry-pick(2)온보딩(2)클린 아키텍처(2)leak(2)목표(2)리팩토링(2)소프트웨어 개발자(2)jackson(2)기획(2)User Manual(2)개발문화(2)(2)mock(2)개방폐쇄원칙(2)실용주의 프로그래머(2)aws(2)변경(2)태도(2)문제해결(1)(1)1on1(1)Pain Point(1)PacketSender(1)StringUtils(1)커뮤니티(1)개선(1)주간보고(1)help(1)불편(1)시니어개발자(1)데이터 엔지니어(1)코드작성외에(1)Memory Leak(1)응집도(1)software engineer(1)Pair Programming(1)힙 메모리(1)TCP Connection Persistence(1)균형(1)아이들(1)고객(1)객체지향의사실과오해(1)성경(1)Device Driver(1)Thread Pool(1)OXM(1)Strategy Pattern(1)지상국(1)비실시간(1)실험(1)SNMP(1)면접(1)사표(1)예측(1)동료주도개발(1)소수점(1)프로토타입(1)메모리가시성(1)Interrupt(1)인증(1)요구사항(1)공유(1)어려움(1)캐시일관성(1)디자인 패턴(1)프로세스(1)Q&A(1)util(1)Functional(1)사용자중심(1)메모리(1)ux(1)volatile(1)Copilot(1)가짜필요(1)자동화(1)결합도(1)문서(1)Persona(1)대역(1)동료(1)조직(1)Feedback(1)아주힘듬(1)변화(1)SOLID(1)network(1)branch(1)XML(1)세미나(1)네이밍(1)EventLoop(1)User Journey(1)다름(1)아두이노(1)삶의자세(1)흥미(1)코드변경관리(1)작업난이도(1)모델링(1)삶의일기(1)부족함(1)CI/CD(1)cdd(1)Manangement(1)authentication(1)UDP(1)Transction(1)switch(1)고통(1)Nginx(1)설계(1)json(1)주니어(1)트러불슈팅(1)exception(1)자유(1)크리스찬(1)DTO(1)코드로 문제 해결 연습(1)더나은코드(1)스프링(1)철학(1)환경(1)1553B(1)프로그래밍(1)redmine(1)신뢰성(1)JPA(1)impact(1)snmp4j(1)템플릿(1)우주(1)메타포(1)행복(1)메시지큐(1)aspect(1)어설프다(1)String(1)동반자(1)인터뷰(1)algorithm(1)부모참여수업(1)감정(1)복잡성(1)일기(1)클린코드(1)이슈관리(1)InvalidMemoryAccess(1)독서메모(1)Ideation(1)di(1)커밋(1)인사이트(1)MVP(1)PSA(1)lazy(1)putty(1)기록(1)스프링 캠프(1)JIRA(1)어린이(1)성과(1)화면중심(1)템플릿/콜백(1)경계값(1)도구(1)short circuit(1)clean software(1)kotlin(1)누수(1)예외처리(1)Native(1)노이즈캔슬링(1)데이터 통신(1)더 나은 개발(1)SDLC(1)발표(1)핀란드(1)제약사항(1)마음 가짐(1)중복(1)제안서(1)heap memory(1)동등분할(1)생존(1)alignment(1)테스트케이스(1)생각의프레임(1)회사(1)개발자(1)memory(1)준비(1)Reflection(1)교보문고(1)관심(1)사업(1)창업(1)lua script(1)도전(1)split()(1)멀티쓰레드(1)Csharp(1)Messaging Service(1)함께(1)의존(1)코딩(1)svn(1)약함(1)IoC(1)assembly(1)projects(1)warning(1)집중(1)문제정의(1)actions(1)SI 프로젝트(1)management(1)신뢰(1)문화(1)캐시불일치(1)rebase(1)죽음(1)빌더 패턴(1)피드백(1)리드잇(1)백로그(1)Thread(1)Product Designer(1)우선순위(1)장애회고(1)S3(1)비정상종료(1)Pull Request(1)garbage collector(1)아쉬움(1)프로젝트(1)Product Design(1)ObjectMapper(1)iteration(1)figma(1)유틸리티(1)데이터를 다루는 일(1)VxWorks(1)

비지니스 로직과 오케스트레이션 역할 분리하기

단위테스트 책에서 비지니스 로직에서 의존 객체들과의 커뮤니케이션하는 코드를 완전히 분리해서 별도의 객체가 수행하도록 하고 비지니스로직을 담은 객체는 이렇게 하면 핵심 비지니스 로직에 대한 테스트 코드를 작성하고 유지보수하기 쉬워진다. 실행 성능도 좋아지며 중요한 비지니

2023년 5월 26일
·
0개의 댓글
·

개발 주기에 통합된 테스트

“테스트 코드가 개발 주기에 통합되어 있어야 한다. 실제로 사용되는 테스트만 가치가 있다. 사용되지 않는 테스트는 의미가 없다.”

2023년 5월 24일
·
0개의 댓글
·
post-thumbnail

피할 수 없는 클라우드 물결 (AWS Summit 2023 후기)

계획에 없었는데 AWS 서밋 둘째 날도 참석하게 되었다. 아무것도 준비해오지 않아 급히 서울에 숙소를 잡고 다이소에서 속옷과 양말을 구매했다. 티셔츠는 오늘 받은 굿즈로 해결. 하루 더 남길 잘했다고 생각한다.한 발표에서 런타임 프로세서를 Intel 계열에서 AWS의

2023년 5월 5일
·
2개의 댓글
·
post-thumbnail

병렬 스트림(Parallel Stream)을 활용한 손쉬운 성능 향상

Stream의 parallel() API를 사용하면 쉽게 병렬 작업을 구현할 수 있습니다. 병렬 스트림은 내부적으로 common ForkJoinPool을 사용하고 디폴트로 CPU 코어 개수만큼의 쓰레드를 생성합니다. CompletableFuture을 사용해서 병렬

2023년 4월 26일
·
0개의 댓글
·

스프링 캠프 2023 후기

강의 전반적으로 모르는 용어, 기술들을 많이 접하게 되었다. 후기를 쓰고 싶었는데 그 날의 강의만 듣고 확실히 이해하지 못한 것들이 많아 후기를 블로그에 남기기가 곤란하다. 그래서 인상깊은 몇 가지만 기록으로 남겨본다.프랑스(유럽 서머타임 적용 국가)는 3월 마지막주

2023년 4월 23일
·
0개의 댓글
·
post-thumbnail

서버의 응답을 지연시키는 2가지 외부 요인

서버 프로그램을 개발하고 운영하다 보면 서버의 응답이 지연되는 문제를 만날 수 있습니다. 다양한 문제의 원인이 있을 수 있지만, 이 글에서는 서버 외부에서 발생하는 문제의 원인에 집중해 보려 합니다. 모든 설명은 TCP 프로토콜 위에서 동작하는 애플리케이션이라 가정하겠

2023년 4월 20일
·
5개의 댓글
·
post-thumbnail

대용량 파일 서버 성능 개선기 (1) : 작은 청크로 분할 전송

네티(Netty) 프레임워크를 사용해 대용량 파일을 처리할 수 있는 서버를 구현했습니다. 그리고 클라이언트에서 대용량 파일(1GB) 패치를 요청하고 패치된 파일이 로컬에 저장되기 까지의 시간을 측정함으로 서버의 성능을 측정해 보았습니다. 초기 서버 구현에서는 파일 패치

2023년 4월 18일
·
1개의 댓글
·

UDP(Message oriented) vs TCP (Stream oriented)

UDP와 TCP 프로토콜은 여러가지 차이점이 있지만 프로그래밍을 할 때 필수적으로 이해해야 할 숨겨진 개념이 있습니다. 그것은 UDP는 메시지를 기반(Message-oriented)한 프로토콜이고 TCP는 스트림을 기반(Stream-oriented)한 프로토콜이란 점입

2023년 4월 15일
·
0개의 댓글
·
post-thumbnail

try-with-resources에 의해 닫히지 않는 AutoCloseable 인스턴스

아래와 같은 코드에서 try 블럭 내에서 생성되어 BufferedInputStream에게 전달되는 FileInputStream 인스턴스는 try-with-resources 문에 의해 자동으

2023년 4월 13일
·
0개의 댓글
·
post-thumbnail

JPA 트랜잭션 내에서 엔티티를 변경할 때 마다 flush 해야하나요?

JPA 영속성 관리에 대해 공부했다. 예전에 팀에서 백엔드 엔지니어(DB를 다루는)들이 모여서 이것과 관련해서 옥신각신 하던 일이 생각났다. 그때 회사 코드에서 하나의 트랜잭션 내에서 엔티티를 변경할 때 마다 flush를 하고 있었는데 영희(가칭)가 매번 flush를

2023년 4월 13일
·
0개의 댓글
·

파일 서버에 1GB 파일 패치 요청 실패 (간단한 JVM 튜닝으로 해결하기)

네티 프레임워크를 사용해 간단한 파일 서버를 구현하고 있습니다. 파일 서버의 성능을 테스트하기 위해 다양한 크기의 파일 패치(Fetch)를 서버에 요청하고 패치된 파일을 로컬 스토리지에 저장하기 까지의 시간을 측정했습니다. 테스트는 서버와 클라이언트를 동일한 컴퓨터에

2023년 4월 12일
·
0개의 댓글
·
post-thumbnail

테스트 코드 자체보다, 테스트 코드를 통해 학습한 것이 중요한 경우

하나의 큰 기능을 구현하면서 단계 단계 내부 구현을 테스트 코드로 만들어 검증해 보았다. 확실히 큰 덩어리를 테스트 하는 것 보다 일이 단순하고 점진적으로 완성해 나갈 수 있어서 좋다. 그런데 나중에 기능 구현을 완성하고 보니 잠깐 몇 일 사이에 내부 구현 방향이 처음

2023년 4월 8일
·
0개의 댓글
·

코드로 문제해결 연습 > 프로그래머스 > 공원 산책

문제 자체와 제약사항을 처음부터 제대로 이해하기 위해 차분히 문제를 읽어나갔다. 문제를 잘못 이해한 실수는 이번에 없었다. 잘한 부분이다.해결책을 설계할 때 선언적으로 큰 그림을 먼저 그려나갔는데 굉장히 좋았다. 다만

2023년 4월 3일
·
0개의 댓글
·
post-thumbnail

상상하지 못한 커리어 전환

내 커리어는 어떤 면에서 내가 할 수 있는, 내 손 안에 있는 일들의 연속이었다. 내가 할 수 없는 내 손 밖 일들을 지나치게 생각할 때 걱정이 생겼고 때때로 두통을 가져왔다. 새로운 것들을 시도하되 지금 상황에서

2023년 4월 2일
·
0개의 댓글
·
post-thumbnail

Netty 구조적 특징 (3) : 이벤트 루프

이번 글에서는 네티의 I/O 쓰레드인 이벤트 루프에 대해 정리합니다.

2023년 3월 26일
·
0개의 댓글
·
post-thumbnail

Netty 구조적 특징 (2) : 비동기

이번 글에서는 네티의 비동기적 특징에 대해 정리합니다.

2023년 3월 23일
·
0개의 댓글
·
post-thumbnail

Netty 구조적 특징 (1) : 쓰레드 모델

지난 몇 년 동안 네티 프레임워크를 사용하여 우주 지상국 소프트웨어를 개발했습니다. 개발을 진행하면서 저와 동료들이 네티의 특징을 제대로 이해하지 못해 실수 했던 몇몇 경험들이 있는데 그 경험들을 바탕으로 네티의 중요한 구조적 특징들에 대해 나누어 정리해 보려고 합니다

2023년 3월 23일
·
0개의 댓글
·
post-thumbnail

(예제와 함께 보는) 기술을 학습하는 3단계

1. “Hello World”로 간단히 빠르게 사용법 익히기 2. 서비스를 만들며 만나는 문제를 깊이 있는 학습 가이드 삼기 3. 테스트 코드로 분명하게 이해하기

2023년 3월 22일
·
0개의 댓글
·

코드로 문제해결 연습 > 프로그래머스 > 당구 연습

계속해서 1시간 이내에 문제 해결이 안되었다. 오랜 시간 고민하고 학습하며 문제를 해결했다. 처음 문제에 접근하며 몇몇 복잡한 조건들이 생각났는데 이미 문제에서 제약 조건을 주고 있었다. 한 번 문제를 읽는 것으로 완

2023년 3월 19일
·
0개의 댓글
·
post-thumbnail

(서비스 제공자가 주도하는) 자바 인터럽트

자바의 인터럽트 기능(Thread.Interrupt())을 사용하면 Blocking 동작이 있는 대상 쓰레드의 동작을 안전하게 중단시킬 수 있다. 그러나 인터럽트 기능은 요청자 주도로 대상 쓰레드 실행을 임의로 중단시킬 수 있는 기능이 아니다. 인터럽트는 단지 대상 쓰

2023년 3월 16일
·
0개의 댓글
·