분류 전체보기 98

보드를 타고 왔습니다.

어제 친한 사람들과 함께 보드를 타고 왔습니다. 찬 공기를 거슬러 눈 덮힌 산으로 향했습니다. 가벼운 설렘과 긴장이 뒤섞인 마음으로 부츠를 조이고 데크에 발을 올리니 떨리는 심정을 가슴으로 느낄 수 있었습니다.넘어지는 기회첫 슬로프에 발을 딛는 순간, 걱정했던대로 넘어지고 넘어졌습니다. 하지만 넘어지는 것도 계획한 일이었습니다. 새로운 기술을 익히기 위해선 몇번이고 땅과 인사해야하니까요. 어느 순간에 느낀건 새로운 기술을 가장 빨리 익히기 위해선 넘어져야한다는 걸 알게 됐습니다. 턴하지 못하고 가던대로 내려가는게 가는게 아니라 한번 넘어지고 다시 시작하는게 더 짧은 구간에서 많은 도전을 할 수 있기 때문이죠. 넘어진다는건 일어나기 위한 선행 작업이더라구요.두려웠던 마음이 뒤덮히는 순간내려가는 길은 새하얀..

나의 생각 2025.01.11

문득 글을 잘 쓰고 싶어졌습니다.

문득 글을 잘 쓰고 싶어졌습니다.글을 잘 쓰는 것이 더 나은 사람이 되는데에 도움이 된다는 생각이 들었기 때문입니다. 어떤 사람이 되고 싶은지 저도 잘 모르겠습니다만, 지금 좋아보이는 것들은 뭐든지 하는 편이라 글을 잘 써보고 싶습니다.좋은 생각은 좋은 습관에서 나오고, 좋은 습관은 좋은 행동에서 오고, 좋은 행동은 좋은 자세에서 온다고 생각합니다. 좋은 자세는 좋은 환경에서 나오고, 좋은 환경은 좋은 생각에서 비롯된다고 믿습니다. 그 한 지점을 어딘가에서 시작한다고하면 글을 써보는게 좋은 시작점인 것 같아서 오늘부터 열심히 글을 써보겠습니다. 그렇다면 어떤 글을 쓰는게 좋을지 고민했습니만 역시 제 생각을 적어보는게 좋겠다는 생각을 했습니다.제 생각을 전시하는걸 그다지 좋아하지 않아 사실 개인적인 노트에..

나의 생각 2025.01.11

2024년 12월에 써보는 2025맞이 준비

이쯤에서 2025년 학점을 어떻게 짤지 고민해봐야겠다.우선 2024년을 되돌아본다. 꾸준히 해왔던 것들을 나열하고, 이후에는 이벤트 성으로 있었던 것들을 나열해보면 좋을 것 같다.꾸준히 해온 것들1. 교회 사람들과 함께 어울림, 교회 위원활동: 14시간 -> 3.3학점2. 회사 일: 티맵 : 40시간, 우형: 36시간 ->  12학점3. 운동: 10시간 -> 3학점4. 링글: 6시간 -> 2학점총 20.3 학점정도 듣고 있는 것 같다.분기정도 주기적으로 시간을 사용했던 일들1. 연애 -> 3학점 (3~6월)2. 이직준비  -> 3학점 (1~6월)2024년에 대한 후기상반기에는 이직을 하느라 힘들었고, 하반기에는 교회 위원으로 섬기는 일에 시간을 최대한 내고 싶었던 것 같다.이 글을 쓰는 12월에야 마음에..

나의 생각 2024.12.02

트랜잭션후 메시지 전송을 보장하는 방법, How to guarantee to send events after Transaction

이 글에서 다루는 내용 이 글은 MSA 환경에서 로컬 트랜잭션의 커밋이후 메시지 전송을 보장하는 방법에 대해서 다룹니다. 내용을 다루기 위해서 예시와 함께 작성되었습니다. https://microservices.io/patterns/data/transactional-outbox.html Microservices Pattern: Pattern: Transactional outbox First, write the message/event to a database OUTBOX table as part of the transaction that updates business objects, and then publish it to a message broker. microservices.io 목차 트랜잭션의 커..

Web 2024.04.22

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

스프링 웹플럭스 좀 더 파보기

이 글을 쓰는 목적 코틀린 스프링을 사용하는 이유 코틀린 스프링을 백엔드 개발할때 쓰는 이유를 적은 글을 쓰며 백엔드 개발을 시작할때 최근에 가장 많이 논의되는 언어가 코틀린과 타입스크립트라고 생각을 하고 있는데, 개인적으로는 서로 blog.mayleaf.dev 스프링 MVC, 스프링 웹플럭스 두 생태계가 있는데 MVC는 멀티쓰레드 기반이고, 웹플럭스는 그러면 왜 쓰는걸까요? 오늘은 웹플럭스를 사용 하는 이유를 공유해보고자 이 글을 씁니다. 이 글의 내용 "스프링 웹플럭스" 쓰는 이유가 뭐냐고 물어보면 저는 리액티브 프로그래밍을 하기 위해서 사용한다고 이야기할 것 같습니다. 그래서 리액티브 프로그래밍이 무엇인지, 왜 스프링 웹플럭스를 사용하는지를 적었습니다. 본문 위 그림은 리액티브 선언문에서 발췌해서 ..

Kotlin 2024.03.22

private 함수를 테스트하고 싶을때

이 글을 쓰는 목적 이 글은 private 함수를 테스트하고 싶은 분을 위해 작성된 코드입니다. 이 글에서 다루는 내용 이 글을 테스트 프레임워크를 통해서 private 함수를 테스트하는 내용이 아닙니다. private 함수를 public으로 바꾸기는 애매하고, private 상태로 테스트하자니 테스트 픽스쳐를 다수 만들어서 코드를 짜야할 것 같은 상황에 있는 사람. 그리고 그런 상황으로 인해서 미래 코드의 순 서가 변경되거나 테스트의 순서가 변경될까봐 다른 방법을 찾아보고 있는 분을 위해서 작성하는 글입니다. 본문 우선 이 글을 보고 계신 분이라면 이미 private 함수를 public으로 오픈해보는 방법에 대해서는 고민해보셨을 것 같습니다. 하지만 오픈하지 않으시는 이유가 있다면 해당 클래스에서 은닉..

Kotlin 2024.03.20

테스트 하기 좋은 코드, 좋은 테스트 코드

이 글을 쓰는 이유 좋은 테스트 코드, 테스트하기 좋은 코드에 대해서 고민하다가 든 생각을 공유해보고자 적습니다. 테스트 하기 좋은 코드 1. 블랙박스 테스트할때 비즈니스 로직의 결과를 단언할 수 있는 코드가 테스트 하기 편하다. 비즈니스로직과 persist 작업이 한번에 이뤄지고 "OK"나 Unit 과 같은 결과물만 내놓으면 stubbing으로 내용이 잘 돌아갔음을 증명해야하고, 이렇게 되면 레포지토리 레이어까지 내려가서 테스트해야한다. "버그 없음"은 테스트 코드를 통해서 증명할 수 있는게 없기 때문에, return을 받아서 결과를 볼 수 있도록 되어있는게 편한 것 같다. 파라미터로 넣은 객체를 확인하는 방법도 있지만, 객체는 Immutable하게 유지해주는 편이 좋기 때문에 비즈니스 로직은 묶어서 ..

Kotlin 2024.01.15

IR compiler란?

이 글을 쓰는 이유 코틀린 진영은 지금까지 멀티플랫폼을 노리고 있는 언어입니다. 여러 환경에서 돌아갈 수 있도록 하겠다는 것인데요. JVM뿐만 아니라, WASM, JS, Native Platform등에서 돌아갈 수 있는 언어를 만드려고 하고 있습니다. 하지만 대부분 사람들이 멀티플랫폼에서 돌리려고 하기보다는 JVM 원툴로 사용하고 있기 때문에 그리고 JVM에서 굴러가서 쓰는 사람들이 대부분이기 때문에 멀티플랫폼에 관련된 글을 적어서 이런 시도를 하고 있다! 라는 것을 알리고 싶었습니다. 그래서 IR 컴파일러가 뭔데? IR컴파일러는 Kotlin IR(intermediate representation, 중간표현)으로 컴파일을 해주는 친구입니다. 자바가 바이트코드로 바꾸고 이걸 jvm위에 올려서 굴리는 것처럼..

Kotlin 2024.01.04

Error Stubbing 하기

이 글을 쓰는 목적 이 글은 우리가 일상적으로 사용하던 에러 출력들을 하기 위해서 어떤 함수들이 필요한지를 적어둔 글입니다. 코드를 작성하는 중에는 에러 안에 어떤 내용이 들어가는지 생각하지 않는 경우가 많고, 그냥 구현해버리면 되는 일이기 때문에 넘어가곤 합니다. 이 글을 쓰게 된 것은 코틀린 테스트코드를 작성하다보니, Exception을 넘겨주고 테스트를 하다보니, stubbing을 더 해줘야하는 것을 보고 이런 것들까지 구현해줘야한다는 걸 공유하고 싶어서 작성합니다. Error Stubbing? Webclient에서 받은 응답을 상태코드에 따라서 다르게 처리하도록 작업을 진행하고 있었다. 그러던 도중 함수를 분해해서 구현해두었는데, Webclient까지 목킹하는건 내가 원하던 범위 밖이어서 상태코드..

Kotlin 2023.12.21