코틀린 스프링을 사용하는 이유

코틀린 스프링을 백엔드 개발할때 쓰는 이유를 적은 글을 쓰며 백엔드 개발을 시작할때 최근에 가장 많이 논의되는 언어가 코틀린과 타입스크립트라고 생각을 하고 있는데, 개인적으로는 서로의 장단점이 다르다고 느껴져서 이런 글을 적어두고 싶었다.특히 Nest.js에 익숙하신 분들에게 도움이 되길 바라며 글을 쓴다. 글의 접근 방식 이 글은 코틀린과 다른 언어를 많이 비교하면서 진행될 예정이다. 자바랑 비교하게 되는 내용도 있고, 개인적인 경험을 빗대기 위해서 Dart같은 약간 생소할 수 있는 언어도 사용했다. 글의 내용 코틀린에 대한 소개 코틀린의 강점이라고 느껴지는 부분 백엔드 개발에서 코틀린을 쓰는 이유 코틀린이란? 코틀린. 모던 랭귀지의 대표적인 주자중 하나이다. 대표적인 삼대장을 뽑아보라고 하면 Rust..

Kotlin 2023.11.20 0

MSA에서 다른 서비스의 트랜잭션이 실패된다면 어떻게 해야할까?, Saga

이 글은 MSA 환경에서 다른 서비스의 트랜잭션 Fail으로 인한 보상로직을 작성하는 방법에 대해서 다루는 글입니다. 이 글을 쓰는 이유 최근에 MSA하다가 A 컴포턴트에서 트랜잭션을 마치고, B 컴포넌트에 이벤트를 던져두었더니, B 컴포넌트가 제대로 처리를 못하면 어떻게 해야하나라는 질문을 받았습니다. 그래서 해결책을 찾아보다가 이 해결책으로 Saga pattern을 알게 되었고, Saga pattern에 대해서 공유하고자 글을 씁니다. https://microservices.io/patterns/data/saga.html Microservices Pattern: Pattern: Saga Implement transactions using a saga, which is sequence of local ..

Web 2024.04.13 0

스프링에서 싱글톤으로 관리하는 빈의 생성주기

스프링 빈 생성주기에 대해서 배웠다. 정확히는 스프링에서 싱글톤으로 관리하는 빈에 대한 생성주기였다. 스프링 컨테이너 생성 스프링 컨테이너의 생성은 말 그대로 Application Context(이하 스프링 컨테이너)의 생성이다. 빈 객체 등록 스프링 컨테이너가 생성되면 빈 객체 등록이 이뤄진다. 이때, 빈이 생성자 주입을 사용하도록 되어있다면, 필요한 의존관계가 빈 객체등록 시점에서 이뤄진다. 의존관계 주입 만약 모든 의존관계가 다 생성자 등록이라면 빈 객체등록이 끝나는 시점에 의존관계 주입도 이미 끝나있을 것이다. 이 의존관계 주입단계에서는 수정자 주입이나, 필드주입을 받는 빈이 주입을 받는다. 초기화 콜백 위 단계에서 의존관계가 주입된 빈들은 초기화 콜백이 수행된다. 초기화 콜백은 Initializ..

Spring 2023.01.26 0

다트 변수, Dart Variable

오늘부터 다트 강좌를 시작합니다. 이 강좌를 시작한 이유는 2가지가 있습니다. 첫 번째 이유는 배운 내용을 복습하고 꼼꼼하게 확인하기 위해서입니다. 다른 사람에게 알려주려고 하다 보면 Expert beginner 수준에 있던 지식을 더 끌어올릴 수 있기 때문입니다. 두 번째 이유는 다트 공식 홈페이지에서 다루지 않는 다른 언어들과 비교하고 제가 얻은 경험을 전해서 실전에 도움이 될 수 있는 팁을 드리기 위해서입니다. 다트 먼저 다트가 어떤 언어인지부터 설명드리겠습니다. 다트는 멀티 플랫폼 런타임을 제공하기 위한 언어입니다. 어떤 환경에서든 편하게 프로그래밍할 수 있고, 누가 만들었는지는 잘 모르겠지만 구글의 다트 팀에서 밀어주고 있는 무료 오픈소스 언어입니다. 한때 개발자가 가장 싫어하는 언어 1위에 올..

Dart 2021.08.28 1

로그스태시가 레디스 정보를 읽는 방식

안녕하세요 메이리프입니다. 오늘은 로그스태쉬가 레디스에서 정보를 어떻게 읽는지 적은 글을 씁니다. 본문 로그스태시는 입력 플러그인을 통해서 특정한 소스의 정보를 읽습니다. 마찬가지로 레디스의 정보를 읽을 때에는 레디스 입력 플러그인을 사용합니다. 지원하는 데이터 타입은 list,channel, channel-pattern 이렇게 세 가지를 지원하며, list의 경우 BLPOP, channel의 경우 subscribe, channel-pattern의 경우 psubscribe 를 통해서 정보를 읽어옵니다. BLPOP은 blocking list pop의 약자로, 해당 키에 대해서 빈 값이면 레디스에서 커넥션을 막고, 값이 있을 때에만 값을 POP하여 넘겨줍니다.(POP이후에는 당연히 값이 지워집니다) chan..

ELK 2020.03.03 0