Spring 72

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

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

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

지난 시간에는 Netty의 탄생 배경에 대해 알게 되었다. (이전 글 클릭!) 글을 시작하기 전에 Netty 의 창시자는 한국인으로, 이희승 씨인데 LINE에서 인터뷰를 한 내용이 있는데 관심있는 분은 읽어보길 바란다. (비동기를 사랑하는 오픈소스 개발자, 이희승) 이번 시간에는 Netty의 공식문서에서 드러낸 특징들에 대해서 읽고 NIO로 테스트를 해 볼 것이다. 1. Netty 특징(Features) 탐구 뭐니뭐니해도 공식문서를 읽어야 한다. 공식 문서 내용은 다음과 같다.더보기DesignUnified API for various transport types - blocking and non-blocking socketBased on a flexible and extensible event mod..

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

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

[Netty] Netty가 뭐에요? - 1탄 : Netty 란? - 용어 정리

이번 새로운 회사에서 Netty 로 작동하는 Framework 에 대해 공부하려고 한다. 그런데 왜 Netty같은 프레임워크가 필요한지 자체도 이해를 잘 못했다. 그래서 초창기 정적 웹 서버와 관련된 지식, 동기와 비동기와 기존의 spring같은 서버 사용시 성능 문제점과 netty를 도입하면서 얻을 수 있는 장점에 대해 설명하고 후에는 그래서 netty를 어떻게 사용하는지 예제를 만들어 볼 것이다. 1. Netty 공식문서 - 용어 확인개발자라면 늘 해야 하는것! 공식문서를 보는 것이다. 다음은 Netty 공식문서 홈페이지에서 Netty 에 대해 소개하는 글이다. - 원문 -Netty is an NIO client server framework which enables quick and easy..

[Spring Framework] SOAP 와 REST(3부작) : 1탄 - SOAP가 뭐야?

오늘도 여러 회사의 공고를 기웃거리는 우리의 키메라! 오늘 그의 눈에 포착된 것이 있으니... 바로 SOAP! SOAP에 대한 이해를 요구하는 요구사항이 적혀 있기에, 키메라는 이에 대해 공부하고 Spring 에서 제공하는 예제를 만들어보고자 한다. 해당 글은 실제적으로 SOAP를 보고 이해하는 방향으로 작성했다. 그러면 떡본 김에 제사 좀 지내보자 숭구리당당 숭당당~ 해당 글을 통해 키메라는 SOAP가 무엇인지, 구조와 문법은 어떤지, 마지막으로 어떻게 사용하는지 볼 예정이다. 들어가기 전에... WS와 WAS 란?다들 정말 많이 들어본 면접 단골 문제이다. 간단히 필자의 기억을 더듬어 보면... WS는 Web Service, WAS 는 Web Application Service로 WS는 단순히 ..

[JPA] : save시에는 @Transactional 이 왜 필요하나? 없는 경우는 뭐지?

최근에 열심히 이직 준비를 하고 있는 오늘의 키메라! 필자는 이와 같은 질문을 받았다 면접관 : JPA를 사용해 보셨다고요? JPA가 뭐죠?키메라 : 네! JPA는 Java Persistent API로 ORM을 위해 사용되는 인터페이스입니다.면접관 : 그러면 JPA에는 왜 save 시에 @Transactional을 붙여야 할까요? 안되다가 마법같이 데이터 조작 작업이 되더라고요.키메라 : 아... 그건 잘... 모르겠는데요?면접관 : ???키메라 : ??? 이에 대한 대답을 찾기 위해 글을 정리했다. 막상 쭈욱 다시 정리하니 별거 없는데 참... ㅠㅠ 1. 트랜잭션에 대해서트랜잭션이란 데이터베이스의 상태를 변화시키기 위해서 수행되는 작업의 단위를 뜻한다. 트랜잭션의 특징은 원자성, 일관성, 독립성..

Spring/JPA 2025.04.13

[Spring Batch] 5장 : Configuring a Step - 4 : Controlling Step Flow ~ Batch Status Versus Exit Status

지난 시간에는 StepExecutionListener ~ Example Tasklet Implementation을 읽어보았다 (지난 내용은 여기 클릭!) 이번 시간에는 Controlling Step Flow부터 다시 읽어볼 것이다. Controlling Step Flow 가지고 있는 job안에서 step을 함께 그룹핑 하는 능력이 한 step에서 다른 step으로 어떻게 job이 "흘러가는지" 제어할 필요가 있다. Step의 실패는 Job 이 실패한다는것을 꼭 의미하는건 아니다. 또한 다음에 어떤 단계를 실행해야 하는지 결정하는 "성공" 유형이 두 가지 이상 있을 수 있다. Step의 그룹이 어떻게 설정되냐에 따라서 특정 step이 전혀 처리되지 않을 수 도 있다. 1. Sequential Flow 가장..

Spring/Spring Batch 2023.12.20

[Spring Batch] 5장 : Configuring a Step - 3 : StepExecutionListener ~ Example Tasklet Implementation

지난 시간에는 스킵 로직을 설정하는 것에서부터 Step 실행에 중도에 끼어드는 방법까지 알아 보았다. (Configuring Skip Logic ~ Intercepting Step Execution) 지난 내용은 여기 클릭! 이번 시간에는 StepExecutionListener에서부터 다시 이어서 읽어보도록 하겠다. Listener? 리스너는 배치 흐름 중에 Job, Step, Chunk 실행 전후에 어떤 일을 하도록 하는 Interceptor 개념의 클래스다. 스프링 MVC의 Interceptor가 실제로 HandlerAdapater 호출 전후로 Interceptor가 호출되는 것처럼 Job, Step, Chunk 전후로 오버라이딩된 메서드가 호출된다. 주로 각 단계별로 로그 기록을 남기거나, 진행된 ..

Spring/Spring Batch 2023.12.13

[Spring Batch] 5장 : Configuring a Step - 2 : Configuring Skip Logic ~ Intercepting Step Execution

이번 시간에는 지난번에 읽던 Step 설정을 이어서 읽어볼 것이다. (지난 내용이 궁금하면 여기 클릭!) 1. Configuring Skip Logic 처리하는동안 맞닥드린 에러들은 Step 의 실패로 결과를 초래하는 대신에 생략해야만 하는 시나리오가 있다. 이것은 데이터를 그것이 무슨 의미인지 이해하는 누군가에 의해 만들어지는 결정이다. 예를 들어, 금융 데이터는 돈이 전동될 때 스킵할 수 없는데 그것이 완벽한 정확함을 필요로하기 때문이다. 반면에 벤더의 리스트를 로딩하는 것은 스킵을 가능케 할 수도 있다. 만약 벤더가 부정확하게 포맷되어잇고 필요한 정보가 빠져 있다면 이슈가 없다. 대개, 이렇나 나쁜 기록들이 또한 쌓이는데 listener에 대해 논의할 때 나중에 다룬다. 다음 Java 예시가 ski..

Spring/Spring Batch 2023.12.07

[Spring Batch] 5장 : Step 설정하기 (Configuring a Step) 1

지난 시간에는 Job을 설정하고 실행하는 여러 방법에 대해 알아보았다. (지난 내용이 궁금하면 여기 클릭!) 이번에는 Step을 어떻게 설정하는지에 대한 글을 읽어볼 것이다. 와우! 너무 기대되는걸? 꿀잼 ^^ 1. Configuring a Step domain chapter에서 논의된 Step은 배치잡의 독립적으로 연속적인 절(phase)를 캡슐화한 도메인 객체로 실제 배치 처리를 정의하고 제어하는데 필요한 모든 정보를 포함한다. 모든 주어진 Step의 내용물은 Job을 쓰는(writing) 개발자의 재량에 달려있기 때문에 이것은 필연적으로 모호한 묘사다(개발자들이 각자 만들어 쓰는 것이라 Step에 대한 의미가 애매할 수 밖에 없다는 것 같다!). Step은 개발자가 요구하는것에 따라 간단할 수도 복..

Spring/Spring Batch 2023.12.05