분류 전체보기 209

[Java] 객체지향 연습 7 - 요금 기능 추가하기 (feat. 개인적인 생각과 향후 방향)

지난 글에서는 공부할 프로젝트에 대해 학습하고, 어느 기능을 추가할 것인지 고민했고 이를 위해 데코레이터 패턴과 책임 연쇄 패턴에 대해 알아보았다. (궁금하면 여기 클릭!) 이번 시간에는 요금 기능과 알림 기능을 추가하려고 하는데...! 생각해보니 지난 글에서 알림 기능은 내가 고민했는데 말만 하고 넘어가버리고 말았다. 요금 기능을 직접 구현하기 전에, 알림 기능을 위한 디자인패턴을 알아보고, 실제 코드를 확장할 것이다. 사실 객체지향을 연습하기 위해서는 코드를 직접 작성하고 학습해야 하는데, 일일히 이것을 복붙하고 설명하는것이 애매하다고 생각했다. 그래서 과감히 전부 제거했고, 해당 작업들에 대한 코드와 히스토리는 다음 Git Branch에서 다 확인할 수 있다(코드 보고싶으면 여기 클릭!) 목표1...

[Java] 객체지향 연습 6 - 프로젝트 구성 및 기본 코드 학습 그리고 데코레이터, 책임연쇄 패턴 복기 (feat. 템플릿 메서드 패턴)

지난 시간에는 객체지향 연습을 위한 프로젝트를 구성하기 위한 전단계로 여러 개념을 학습했다.(이전 내용이 궁금하면 여기 클릭!) 이번 글에서는 지난 시간에 이어 학습용 프로젝트 구성을 이어서 진행할 예정이다. 시작하기에 앞서서 나의 생각을 좀 적어보도록 하겠다. 해당 프로젝트는 JPA나 부가적인 기술들은 전혀 고려하지 않았다. 다만 초기 학습을 위해서는 순수하게 Domain 주도로 개발을 진행하는 것이 맞다고 생각을 했다. 현실에서 실제 개발을 한다고 하면, 솔직히 기술 스펙이 바뀌지는 않을것이다. 이미 잘 돌아가고 있는 프로젝트에 한국에서 누가 이걸 새롭게 다 하고 싶은 경우가 있는지 반문을 해보았다. 이미 서비스중인 기술을 큰 리소스를 들이면서 새로운 기술을 적용하는것은 좋을 수 있지만, 그에 ..

[Java] 객체지향 연습 5 - 상황 부여와 코드 작성 전 간단한 지식 학습 (feat. DDD를 곁들인)

Program to an interface, not an implementation. => 구현이 아닌 인터페이스에 맞춰 프로그래밍하라.출처 : GoF(Gang of Four)의 《디자인 패턴 (Design Patterns: Elements of Reusable Object-Oriented Software)》 객체지향 관련 글은 2025년 9월 이후로 작성하지 않고 있었는데 정말 오랜만에 작성한다. (지난 글이 궁금하면 여기 클릭!) 그동안 Netty를 중심으로 학습이 진행되었고, AWS 자격증 취득을 목표로 하다보니 사실 흥미를 느끼지 못했다. 하지만 OOP에 준수한 코드를 작성하고, 이를 Netty에 모듈로 붙여서 작동하는 코드롤 만들 예정이다. 해당 코드의 작업들은 oop-ddd-test-pro..

[도서 회고록] 강의 수강 - Java/Spring 테스트를 추가하고 싶은 개발자들의 오답노트 후기

오랜만에 강의를 완강했다! 강의의 제목은 Java/Spring 테스트를 추가하고 싶은 개발자들의 오답노트이다. 벌써 작년 9월의 글인데, 자바/스프링 개발자를 위한 실용주의 프로그래밍 이라는 책을 정말 감명깊게 읽었다.(해당 회고록 여기 클릭) 그런데 해당 저자의 강의가 inflearn에 올라가 있으니 이걸 올해 초에 사놓고 봤는데 생각보다 코드 리팩토링 하는 과정에서 많은 시간을 쓰게 되어서 따라하면서 생각하는데 시간이 오래 걸렸고 드디어! 2026년 2월 21일 마감을 했다. 내가 감명깊게 기억하는 부분은 다음과 같다. 테스트하기 쉬운 코드를 어떻게 작성하는지 고민하면, 자연스레 클린한 코드를 고민하게 된다. 간단하지 않은가? 사실 이것이 이 강의를 관통하는 하나의 핵심 가치로 이를 위해서 의..

[Netty] Netty가 뭐에요? - 10: 정말 Netty는 빠를까? 2탄 - 대용량 데이터 처리 속도 비교(feat. Visual VM 활용하기)

지난 시간에는 실제로 Netty 가 일반 Blocking 으로 요청을 했을 때 보다 속도가 빠른지 성능 테스트를 해 보았다.(지난 내용이 궁금하면 여기 클릭!) 이번 시간에는 시나리오 2를 통해 성능을 좀 더 테스트해보려고 한다. 참고로 필자는 window 11 환경의 cmd 창에서 테스트를 진행했다. 0. 지난 내용을 복기해본다.1. 대용량 페이로드 테스트를 진행한다.2. 결과를 비교해서 어느것의 성능이 뛰어난지 확인한다.3. JVM 의 구조에 대해 이해한다. 4. VisualVM을 도입해서 JVM 현황을 파악한다.5. 결론 0. 지난 내용 복기지난 시간의 내용을 복기 + 정리하고 가려고 한다. Apache JMeter 를 다운로드 해서 세팅하는 법도 알아봤고 시나리오 1 대량 연결 유지 테스트 (..

[Netty] Netty가 뭐에요? - 10: 정말 Netty는 빠를까? 1탄 - 처리량과 지연시간 파악 (feat. Apache JMeter 활용하기)

이전 글에서는 어떻게 Java NIO는 비동기 프로그래밍을 구현했는지 알아보았다. (궁금하면 여기 클릭!) 이번 시간에는 다양한 예시를 통해서 성능 테스트를 해보려고 한다. 이를 Apache JMeter 를 사용하는 방법을 정리하면서 해가려고 한다. 목표0. Apachce JMeter 를 실행하는 법을 이해한다.1. 부하 테스트를 하기 위해서는 무엇을 고려해야 하는지 알아보고 시나리오를 작성한다.2. Spring boot 와 Netty 서버를 구축하고, 실제적으로 실행한 결과를 분석해본다. 0. Apache JMeter 다운로드 + 실행 필자는 Apache JMeter 공식 사이트에 들어가서 다음을 받았다. (다운로드 공식 사이트 여기!) 다운을 받으면 Github 사이트에서 어떻게 실행하는지 나와있..

[Netty] Netty가 뭐에요? - 부록2: NIO 는 어떻게 비동기를 구현했을까?

최근에 글을 계속 다시 정리하고 있는데, 문득 생각이 났다. 동일한 코드인데 어떻게 Java NIO는 비동기를 무엇을 통해서 구현했는지 궁금했다. 이에 대한 분석 및 이해를 하기 위한 글을 이번 섹션에서 정리한다. 목표 0. 동기와 비동기 그리고 블로킹과 논블로킹 차이점 재정리1. 비동기를 어떻게 구현하지?2. 직접 구현시의 문제점0. 동기 vs 비동기 & 블로킹 vs 논블로킹 차이점 재정리너무 자주 봤지만, 맨날 까먹는... 이 내용을 명확하게 다시 집고가자. 해당 내용은 Gemini에게 요청해서 내가 다듬도록 했다. 0.1) 동기와 비동기 (Synchronous vs Asynchronous)핵심 기준: "요청한 결과값을 누가, 언제 신경 쓰는가?" - 동기 (Synchronous)요청자(Caller)..

[Netty] Netty가 뭐에요? - 부록1: - Netty의 전체 구성도, Channel 분석 및 Bootstrap 활용법

이전 글에서는 Protocol Support 를 알아보았다. (이전 글 클릭) 현재 이전 글들을 보면서 다시 점검하고 있는데, Netty 시리즈 1~3탄 까지는 어느정도 써먹을 만 한데 그 이후는 영... 크게 머리에 쏙쏙 박히지 않고 글을 작성한 본인조차 다시 보려니 뭘 말하고 싶은건지 명확히 와닿지 않는 부분이 많았다. 이러한 문제들은 차차 정리할 예정이지만 읽다보니 그런데 문득 생각이 들었다. Netty에서는 다양한 Channel과 개발을 편리하게 해주는 기능을 제공해주고 있는데 Channel의 구현체들의 존재 이유와 어느 상황에서 어느 Channel이 좋은건지 파악하고, Bootstrap의 명확한 사용방법을 큰 그림을 그려가면서 알아가려고 한다. 사실 Channel 에 대해서는 해당 글..

[Netty] Netty가 뭐에요? - 9탄 : 공식 문서 - Protocol Support 탐방 (zbli/gzip Compression, Large File Transfer, RSTP, Legacy Text & Binary Protocols with Unit Testability)

해피뉴이어! 올해 새해가 밝았고, 2026년의 첫번째 글은... Netty가 차지하게 되었다 와.. 쩐다... 지난 시간에는 Protocol Support 섹션의 HTTP & WebSocket / SSL & StartTSL / Google Protobuf에 대해 알아보았다. (궁금하면 여기 클릭) 이번 시간에는 Protocol Support 섹션의 나머지를 알아보려고 한다. zbli/gzip Compression, Large File Transfer, RSTP, Legacy Text & Binary Protocols with Unit Testability가 이에 해당한다. 그럼 다시 한 번 가... 보자고! 1. zlib/gzip Compression 해당 섹션의 Package Summary를 보면..

2025-12-28 요즘 근황 업데이트 + 회고와 내년 계획

최근에 감기에 걸려서 열심히 진행중이던 여러 개인 일정이 밀리고 있다. 그렇게 아픈 김~에 올해 있었던 일들에 대해 회고 및 정리하고 내년 계획을 생각해보고자 한다. 1. 새로운 회사에서의 적응과 만족감올해 필자의 가장 큰 목표는 이직이었다. 사실 좀 더 욕심부리고 더 큰 회사를 갈 수 있지 않을까? 하는 욕심도 있긴 했다. 하지만 어쩌하나~ 이전 회사에 남아있었다면 정말 미쳐버릴거 같았으니... 미치고 팔짝뛰고 불질러 버리는거보다는 낫지 아니한가? (리얼임 진지하게... ㅋㅋㅋㅋ) 대놓고 꼽주던 고인물 몇몇, 자기가 할 일을 던지고 못한다고 훈수두던 사람이며... 책임감 없이 알아서 하라던 그 엉터리 사수들과 일하는데 신물이 났다. 그렇다보니 아무래도... 미래를 생각할 수 없다? 는 점이 너무 사..