전체 글 198

[Spring Framework] 웹소켓 공식문서 읽기 1 - WebSocket API, SocketJS Fallback 그리고 STOMP Overview & Benefits

사실 필자는 학창시절에 다 외우면 공부를 잘하는 것이라고 생각했다. 하지만, 이해가 수반되어야 그 어떤것이라도 외울 수 있는 것이라고 최근에서야 깨달았고, (오 나의 늦은 20대의 고백~) Netty공식문서를 읽어보니 Web Socket을 지원한다길래 이게 Spring Framework에서 지원하는 Web Socket과 무엇이 다른지 알기 위해서 글을 다시 정리한다. 그냥 공식문서를 읽어보는건데, 가장 흔한 채팅방을 기준으로 생각해보겠지만 이를 정말 많은 사람이 접근할 시 어떻게 설계를 해야 하는지 공부하고 정리하려고 한다. (귀찮음을 극복할 수 있다면 말이다 하하) 해당 글은 Spring > WebSockets 공식문서를 참고해서, 이해가 안되는 부분에 살을 붙여서 정리한 것이니 해당 글을 봐주면 ..

[Netty] Netty가 뭐에요? - 7탄 : 공식 문서 - Core 정리 및 Tansport Services 탐방

지난 시간에는 Netty에서 제공하는 Echo 예제를 보았다. (지난 글 여기 클릭!) 사실 글 길이는 별거 안되어 보이지만 변명(?)을 하자면 이걸 어떻게 구성을 하는게 내가 이해가 더 잘될지 고민했기 때문이다. 또 단순히 코드를 탐방하는 경우, 흐름을 주석으로 정리한 것을 접어버리다 보니 상대적으로 양은 적어보였다. 현재는 Netty의 모든 것을 한 번에 뜯어볼 수 는 없으니, 현재 차근차근 뜯어보고 있는 상황이다. 그러면 다시 ... 핵심 구조를 다시 보고 가자. 이미 우리는 Zero-Copy-Capable Rich Byte Buffer에 대해서 공부했다. (Rich Byte Buffer 내용은 여기!) 이번에는.. Universal Communication API와 Extensible Event ..

[Netty] Netty가 뭐에요? - 6탄 : 공식 문서 - Echo 테스트 학습

지난 시간에는 Netty 학습 5탄에서 ByteBuf에 대해서 상세히 알아보았다.(이전 내용은 여기 클릭!) 이번에는 Netty 학습 4탄에서 미처 이어가지 못했던 예시 학습을 이어서 하려고 한다.(4탄 내용은 여기 클릭!)1. Composite Pattern과 Netty우선 예시를 더 보기 전에 필자는 해당 클래스들을 알게 되었다. EventExecutor 가 EventExecutorGroup을 상속하고EventExecutorGroup은 내부에 Iterator에 EventExecutor를 담고 있는 구조다. 무언가 Composite Pattern과 익숙하다. Composite Pattern 개별 객체와 객체 그룹을 똑같은 방식으로 다루는 디자인 패턴이다. 공통된 operation을 선언하고 Compo..

[Netty] Netty가 뭐에요? - 5탄 : Netty Architecture - ByteBuf Summary 읽기

지난 시간에는 Spring MVC, Spring Web Flux를 알아보면서 Netty의 차이점이 뭔지 알아보았으며, 가장 쉬운 예시 코드를 통해서 학습을 했다. (지난 내용 여기 클릭!) 이번에는 4탄에서 논의하느라 놓친 Netty 의 Architecture에 대해 알아보고자 한다. 지난 예시에서 봤던 NioEventLoopGroup, ServerBootStrap, ChanelInitializer 들이나 예시들은... 6탄에서부터 확인해면 될 듯 하다 ㅠㅠ.. 해당 글은 Javadoc 에서 소개하는 글을 io.netty.buffer 패키지를 중심으로 읽어보고, 핵심 클래스 구조들에 대해서 좀 더 알아보려고 한다. 참고로 3.x 버전까지는 뭔가 별도로 웹에서 볼 수 있게 정리를 해줬는데, (사이트 ..

[Netty] Netty가 뭐에요? - 4탄 : Spring MVC 와 Spring Web Flux 그리고 Netty 예시 코드 탐방

지난 시간에는 Netty의 공식문서에 있는 특징에 대해 알아보고 NIO 에 대한 예시 코드를 작성해보았다.(지난글은 여기 클릭!) 그리고 Architecture 초입부를 읽었는데... 그 전에! 이번 시간에는 자바공화국 한국에서 가장 많이 사용하는 Spring framework 와 Netty Framework을 간단하게 비교해보고 Netty 공식문서에서 제공하고 있는 예시 코드를 탐방해볼 것이다. 개인적으로 특정 기술에 대해 잘 모르겟으면, 필자 키메라는 비교군을 찾는 것이 좋다고 생각한다. 기존의 Spring은 뭐가 부족했길레 Netty 가 필요했던 것이고 두 개의 성격을 비교해보고자 한다. 물론 이전의 글 중 하나인 [Netty] Netty가 뭐에요? - 2탄 : Netty가 필요하기 까지 를 보..

[Java] 객체지향 연습 4 - 서비스에 대한 이해와 Layered Architecture 적용(feat. Spring 공식문서)

지난 글에서 SOLID와 디자인 패턴에 대해 알아보았다. (여기 클릭!) Java 섹션이지만, 가장 먼저 트랜잭션 스크립트에 대해 알아보고 Spring 공식문서에서 소개하는 각각의 Stereotype Annocation인 @Controller, @Service, @Repository를 알아보고 DDD와 OOP를 어떻게 섞어야 하는지를 알가볼 것이다. 한국에서 자바 개발자는 대부분 스프링 쓰자나? 해당 내용도 자바/스프링 개발자를 위한 실용주의 프로그래밍 을 많이 참고했으니 꼭! 구매를 바란다. 그럼... 후비고...!!! 유노윤호가 말했지... 우리에게 가장 해로운 해충은 대충이다. 대충 하지 말고 제대로 해보겠다 ㅠㅠ... 1. 액티브 레코드(Active Record) vs 트랜잭션 스크립트(Tr..

[Java] 객체지향 연습 3 - SOLID 원칙과 디자인패턴

지난 시간에는 행위로 코드를 설계하는 것에 대해 알아보았다. (여기 클릭) 이번 시간에는 단순 행위 설계에서 더 나아가 SOILD 에 대해 다시 알아보고, Interface를 활용해서 어떻게 객체지향스러운 코드를 작성할 수 있는지 알아보고자 한다. 이번에도 최대한 공식 영어 명칭에 대해서 분석하고 보려고 한다. 흐름은 실용주의 프로그래밍 책을 따라갈 것이다. 1. SOLID 분석아오.... solid 정말 많이 들어봤다. 그런데 사실 직접 뜻에 대해서 분석은 안햇던 것 같다. 단순히 암기를 한거지? 으으음...!!! 그래서 필자는 현재 다시 이를 훑어보려고 한다. Single Responsibility Principle단일 책임의 원칙은 하나의 모듈이 하나, 그리고 오직 하나의 액터에 책임이 있어야..

[Netty] Netty가 뭐에요? - 3탄 : Netty의 특징과 구조 및 NIO 테스트

지난 시간에는 Netty의 탄생 배경에 대해 알게 되었다. (이전 글 클릭!) 글을 시작하기 전에 Netty 의 창시자는 한국인으로, 이희승 씨인데 LINE에서 인터뷰를 한 내용이 있는데 관심있는 분은 읽어보길 바란다. (비동기를 사랑하는 오픈소스 개발자, 이희승) 이번 시간에는 Netty의 공식문서에서 드러낸 특징들에 대해서 읽고 NIO로 테스트를 해 볼 것이다. 1. Netty 특징(Features) 탐구 뭐니뭐니해도 공식문서를 읽어야 한다. 공식문서의 내용을 정리하면 다음과 같다. Design(디자인)- 블로킹/논블로킹을 모두 지원하는 통일된 API- 유연하고 확장 가능한 이벤트 모델- 커스터마이징 가능한 스레드 모델 (싱글 스레드부터 SEDA 같은 멀티 스레드 풀까지)- UDP를 포함한 Con..

[Netty] Netty가 뭐에요? - 2탄 : Netty가 필요하기 까지

이전 글에서는 Netty의 소개를 읽고 관련 있는 기본 지식들에 대해 알아보았다. (여기 클릭!) 이번 시간에는 어떻게 해서 Netty가 출현하게 되었는지를 정리하려고 한다. 설명이 좀 부족할 수 있지만... 액기스와 중요한 부분만 캐치하고 흐름대로 정리하려고 한다. 물론 다 옛날에 분명 배웠고 기억도 가물가물하다. 하지만 다시 복기하는 차원에서...1. 초기 웹 : Static Web Server초기에는 정적 웹 서버만 제공을 했다. 정적 웹 서버란, 말 그대로 정적 파일만 제공하는 서버이다. HTML, CSS, Javascript 같은 단순한 파일을 그대로 전달해주고, 서버 쪽에서 별도 동적 연산을 하지 않는다. 우선 웹페이지를 가져오려면 우리 브라우저에 웹 서버에 파일을 요청한다. 그러면 serv..

[Java] 객체지향 연습 2 - 행위로 코드 설계하기

지난 글에서는 객체지향에 대해 간단하게 알아보았다. 이번에는 TDA원칙을 통해 객체가 어떻게 능동적으로 동작하도록 하는지 학습하려고 한다. 만화나 그런걸 보면 꼭 악당이 지면 뒤에 더 강한 악당들이 이런말을 한다. 크크큭...! 그 녀석은 우리중에 최약체였지...! 하면서 친절하게 주인공이 최강이 될 때까지 맞춤으로 싸워주는 악당들... 그렇다... 사실 이전 글도 마찬가지로 흔히 이야기하는 가장 약한 녀석이었다. 1. 덕 타이핑과 TDA이전 글에서는 그냥 객체지향 식으로 하면 된다~ 이런 식으로 햇지만 이번에는 좀 더 행동을 어떻게 하냐에 따라서, 객체지향 개발을 쉽게 할 수 있도록 덕 타이핑과 TDA에 대해 먼저 알아보려고 한다. 덕 타이핑(duck typing)은 동적 타이핑의 한 종류로, 객체..