전체 글 (20) 썸네일형 리스트형 Tomcat BIO에서 NIO 까지... - 2 안녕하세요.이번 글은 'Tomcat BIO에서 NIO 까지... - 1'에 대한 후속 글이며 Java NIO 라이브러리를 활용하여 NIO 방식으로 동작하는 서버를 간단히 구현해본 내용에 대해서 공유하고자 합니다.'NIO 기반의 Tomcat은 이런 방식으로 동작하지 않을까?' 라는 생각으로 관련 내용을 학습하여 구현했으므로 세세한 부분 보다는 전체적인 동작 방식에 초점을 맞추어 주시면 좋겠습니다. 소스 링크는 아래와 같습니다. https://github.com/chrismrkr/nio-example GitHub - chrismrkr/nio-example: NIO ExerciseNIO Exercise. Contribute to chrismrkr/nio-example development by creating.. Tomcat BIO에서 NIO 까지... - 1 안녕하세요.이번 주제에서는 Tomcat BIO에서 시작하여 NIO까지 Deep Dive하여 개인적으로 분석한 내용에 대해서 정리하고, 이와 관련되어 실습 및 테스트한 내용에 대해서 공유하고자 합니다. 1. 배경 BIO 부터 NIO에 대해서 분석을 하게 된 이유는 Tomcat 오픈소스 자체에 대한 호기심이었습니다. 스프링 부트에는 Tomcat이 기본 WAS로 내장되어 있고, 이를 활용하는 개발자는 Tomcat 기술이 추상화 되어 있기 때문에 구체적인 코드를 모르더라도 설정 파일을 활용해서 간단히 서버를 구축할 수 있습니다. 물론, 저도 마찬가지로 Tomcat의 구체적인 동작을 알고 있지 못했습니다.그러나, 'Tomcat도 서버이기 전에 호스트 위에 떠 있는 프로세스이고, 어떤 방법으로 클라이언트와 연결하.. 전자 지갑 시스템 - 2 안녕하세요.이번 글에서는 전자 지갑 시스템을 시뮬레이션으로 Saga 패턴을 활용하여 직접 구현하며 겪었던 내용에 대해서 설명하도록 하겠습니다.이와 관련된 Github 링크는 아래와 같습니다. https://github.com/chrismrkr/wallet-example GitHub - chrismrkr/wallet-exampleContribute to chrismrkr/wallet-example development by creating an account on GitHub.github.com TCC, Saga, 그리고 이벤트 소싱 등 여러가지 방법 중 Saga 패턴을 활용하여 시뮬레이션을 구현했습니다.TCC 방식은 Saga 보다 성능 자체는 좋지만, 확정/취소에 대한 예외 처리를 개발자가 모두 직접 해.. 전자 지갑 시스템 - 1 안녕하세요.이번 글에서는 전자 지갑 시스템를 구현하기 위한 내용을 학습한 것에 대해서 정리하도록 하겠습니다. 참고 했던 블로그 글은 아래와 같습니다.https://jm-baek.tistory.com/339 12장. 전자 지갑결제 플랫폼은 일반적으로 고객에게 전자 지갑 서비스를 제공하여 고객으로 하여금 지갑에 돈을 넣어 두고 필요할 때 사용할 수 있도록 한다. 예를 들어, 은행 카드에서 전자 지갑에 돈을 이체jm-baek.tistory.com 전자 지갑 시스템을 구현하기 위한 핵심 요구사항은 아래와 같다고 파악했습니다.데이터베이스 선택 : 전자 지갑 시스템은 대규모 트래픽의 잔액 이체 서비스를 수용하기 위해 적절한 분산 DB를 채택해야 한다.트랜잭션 처리 방안 : 이체 서비스란 서로 다른 사용자가 잔고를.. 결제 시스템 개발 프로젝트 - 1 안녕하세요.이번 글에서는 결제 시스템 개발을 위해 관련된 주제에 대해 학습하고 내용을 정리하였습니다.학습을 위해 참고한 링크는 아래와 같습니다. 결제 시스템에 대한 전체적인 프로세스와 네이버 페이에서 제공하는 결제 시스템에 대해서 정리한 내용을 설명하도록 하겠습니다. 11장. 결제 시스템결제 시스템이란?위키백과에 따르면 "금전적 가치의 이전을 통해 금융 거래를 정산하는데 사용되는 모든 시스템"이다.1단계: 설계 범위1. 기능 요구사항대금 수신(pay-in) 흐름: 결제 시스템이 판jm-baek.tistory.com 네이버페이 개발자센터응답 예 Response HTTP/1.1 200 OK { "code": "Success", "message": "", "body": { "businessNo": "220.. @Transactional Deep Dive 안녕하세요.이번 글에서는 스프링에서 제공하는 @Transactional 어노테이션에 대해서 탐구한 내용에 대해서 정리하고자 합니다. 메소드에 @Transactional 어노테이션을 붙이는 이유는 메소드 내의 서비스에 특정 트랜잭션 정책을 적용하기 위함입니다. 또한, isolation, propagation 등의 세부적인 설정을 통해서 트랜잭션 정책을 설정할 수 있습니다. 간단하게 어노테이션을 붙임으로써 복잡한 트랜잭션 설정을 할 수 있다는 점이 흥미롭다고 판단되었고, 자주 사용하는 어노테이션인 만큼 자세한 동작 원리와 적용된 기술 등에 대해서 깊게 파악하고자 했습니다. 1. AOP를 활용한 프록시 생성@Transactional에 사용된 첫번째 기술은 AOP입니다. Pointcut을 이용하여 @Transa.. Java Annotation 안녕하세요.이번 글에서는 자바의 어노테이션에 대해서 분석한 내용을 정리해보고자 합니다. 순서는 아래와 같습니다.Annotation의 동작 및 속성@Transactional이 인식되는 과정어노테이션의 기본 속성 및 주요 예시인 @Transactional 어노테이션의 인식 과정에 대해서 정리하였습니다. 1. Annotation의 동작 및 속성어노테이션은 클래스, 생성자, 메소드 등 특정 위치에 정의될 수 있으며, 정책에 따라서 컴파일 타임에 적용되거나 리플렉션 활용하여 런타임에 접근될 수 있습니다. 예시는 아래와 같습니다.@Target({ElementType.TYPE})@Retention(RetentionPolicy.RUNTIME)@Documented@Componentpublic @interface Conf.. Java ObjectMapper (Feat. RedisTemplate) 안녕하세요.이번 포스팅에서는 Java의 ObjectMapper에 대해서 분석한 내용을 공유하고자 합니다. ObjectMapper는 객체의 직렬화 및 역직렬화를 위해 사용되는 클래스입니다.Redis에 객체 저장을 시도하다가 LocalDateTime 직렬화에 실패하는 문제를 만나 ObjectMapper의 registerModule과 activateDefaultTyping 메소드를 활용하여 문제를 해결한 경험도 있고, ObjectMapper를 자주 사용하고 있기 때문에해당 기술이 어떻게 동작하기에 객체들을 자동으로 직렬화 및 역직렬화하는지 확인하고자 했습니다. 1. ObjectMapper의 동작 흐름ObjectMapper 클래스의 writeValueAsBytes 직렬화 메소드를 정리해보면, 아래와 같이 진행됩.. 이전 1 2 3 다음