Posts by Category

EXPLANATION

Null을 피하기만 하는게 마냥 좋은 것일까(feat. Kotlin)

7 분 소요

블로그를 보다 보면 Null 반환에 대한 글들을 많이 볼 수 있다. 대부분 클린코드에서 말하는 Null 코드는 나쁜 것이니 지양해서 사용해야 한다고 이야기하고 있다. 하지만 과연 나쁘다고 덮어놓고 사용하지 말아야 할까?

더 나은 회의문화를 위하여

9 분 소요

길다고 말하기는 어렵지만 지난 세월 동안 업무를 해오면서 수많은 회의를 겪어왔다. 매주 형식적으로 이루어지는 주간 회의에서부터 상급자에게 보고하려는 회의, 의사결정 논의, 긴급한 이슈를 다루기 위한 회의, 제품 개발을 위한 아이디어를 모으기 위한 회의 등 수많은 형태의 회의들이 있...

왜 LazyInitializationException이 발생하지? - OSIV편

11 분 소요

이 글은 Spring Data JPA를 이용하여 배치 기능을 개발하면서 겪었던 LazyInitializationException 발생 사례를 토대로 문제 해결방법을 찾아가는 과정을 적어본 내용이다. 사실 이 글에서 중점적으로 다루게될 OSIV(Open Session In View)...

추상화와 협업

13 분 소요

이 글은 객체지향의 사실과 오해의 내용 중 추상화와 관련된 내용을 읽으면서 좀 더 나은 협업을 위한 나의 생각을 사내 워크샵에서 공유하게 되었고 그 내용을 옮겨 적은 글이다.

Kotlin JPA Entity에 대한 고찰

40 분 소요

최근 Kotlin이 서버 언어로 각광을 받기 시작하면서 Kotlin + Spring으로 서버를 개발하는 케이스가 많아졌다. 그러면서 자연스레 Kotlin으로 JPA를 사용하는 사례 또한 많아졌다. 다만 Kotlin으로 JPA를 사용하다보면, 정확하게는 Entity를 정의하다보면 K...

도메인 주도 개발 전환 이야기

13 분 소요

이 글은 현재 내가 몸담은 스포카의 도도카트 서비스에서 도메인을 정의하고 그것에 맞게 백엔드의 구조를 개선해 가는 과정을 적은 이야기이다. 도메인 주도 개발 전환 이야기라는 장황한 제목을 적긴 했지만 사실 현재 만들어져있는 도도카트의 백엔드 코드를 도메인에 맞게 재 구조화하고 리펙...

좋은 코드리뷰에 대한 고찰

9 분 소요

이 글은 코드리뷰 활동을 하면서 어떻게 하면 더 나은 코드리뷰활동을 이어갈 수 있을까 라는 생각을 정리한 글이다. 백명석님의 Code Review에 대하여라는 영상을 많이 참고하였습니다.

SQLAlchemy의 filter에서 is None/is not None은 왜 동작하지 않을까?

6 분 소요

이 글은 Python 초보인 내가 SQLAlchemy를 (제대로 알지 못하고)사용하면서 겪었던 이슈에 대해 원인을 찾아보고 왜 SQLAlchemy가 그렇게 동작하게끔 구현되었는지, 앞으로 사용할 때 어떤 주의를 기울여야 하는지를 정리한 글이다.

All knowing oracle

3 분 소요

이 글은 테스트 검증에 대한 코드를 리뷰하면서 느꼈던 나의 생각을 정리한 글이다. 옳고 그름, 맞고 틀리고를 떠나 온전히 나의 생각을 정리하고 이런 고민을 했던 것을 기록하기 위함이니 혹시 다른 의견이 있다면 댓글로 적어주시면 좋은 토의를 해볼 수 있을 것 같다.

재고 이력관리와 일급 컬렉션

10 분 소요

이 글은 회사에서 재고 관리 서비스의 재고 이력관리 기능을 개발하면서 일급 컬렉션을 사용하게 되었는데, 일급 컬렉션을 어떻게 활용하였는지 소개하는 글이다.

Entity와 Value Object

6 분 소요

객체지향언어로 개발을 하다보면 우리는 수많은 클래스를 생성하고 그 클래스를 사용한다. 도메인 주도 설계 책을 읽으면서 우리 만드는 클래스들이 어떤 책임을 가지냐에 따라서 역할을 나눌 수 있다는 것을 배우게 되었고 그중에서 이 글에서는 Entity와 Value Object에 대해서 ...

The review of reconciliation refactoring

4 분 소요

이 글은 내가 회사에서 대사 기능을 리펙토링하면서 배운것들을 동료들에게 공유하기 위해 정리했던 내용을 옮긴 글이다. 피쳐를 쳐내기 바쁘다는 핑계로 대대적인 리펙토링을 할 기회가 많지 않았는데 이번 리펙토링을 하면서 크게 스프링의 빈을 정의하고 어떻게 주입하는 지에 대해 좀더 배울 ...

The review of sku service development

7 분 소요

이 글은 내가 회사에서 SKU 기능을 개발하면서 고민했던 내용들을 동료들에게 공유하면서 정리했던 내용을 옮긴 글이다. 기능 개발을 맡게 되면서 평소 해보고 싶었던 것들을 도입해 보았고 그것을 해보면서 많은 것들을 배우고 느낄 수 있었다. 아직 갈길이 멀지만 개인적으로는 좋은 경험이...

Defining JPA’s ID in Kotlin

1 분 소요

Kotlin으로 Spring Data JPA를 사용할 때 많은 고민을 하였다. Entity Class를 정의할 때 특히 그런데, Data Class를 사용할지 말지, val를 사용할지 var를 사용할지 말지 등등 항상 어떻게 하는게 좀더 의미있는지 고민이 된다. 이 글은 그중에서 ...

Comparing Testing Library for Kotlin

6 분 소요

Test의 중요성이 부각되면서 요즘 개발을 할때 테스트 코드를 많이 작성한다. 어쩌면 오퍼레이션 코드보다 테스트 코드가 프로젝트에서 더 많이 작성되기도 할지 모르겠다. 테스트 코드는 오퍼레이션 코드 못지 않게 아니 어쩌면 더 높은 가독성을 목표로 작성되어야 한다. JVM환경에서 자...

JPA Application Level Isolation

2 분 소요

DBMS마다 각각 다른 기본 격리수준을 제공한다. Mysql, Maria 데이터베이스는 기본적으로 REPEATABLE READ이고, Oracle, MSSql은 READ COMMITTED이다. Aurora의 경우는 Writer 인스턴스는 REPEATABLE READ Reader 인스...

Amazon MQ vs Amazon SQS

4 분 소요

이전에 작성한 글에서 새로운 프로젝트에 도입할 Message Queue들 중 Amazon MQ와 Amazon SQS를 후보군으로 채택하였었다. 이번 글은 Amazon MQ와 Amazon SQS 중에서 Amazon MQ를 선정한 배경 및 이유에 대해서 작성해 보고자 한다.

Kotlin Scope Functions

3 분 소요

Kotlin에서 제공하는 함수들 중에 let, run, with, apply, also라는 함수들이 있다. 함수명은 다르지만 얼핏 보면 비슷한 동작들을 하고 있고 실제로 사용할때 다른함수로 사용해도 기능이 동일하게 동작하기도 하는 함수도 있다. 그럼 Kotlin에서는 왜 하나의 함...

Tunneling vs Port Forwarding

3 분 소요

Tunneling과 Port Forwarding이라는 말은 비슷한 의미로 혼용해서 쓰는 경우가 많이 있다. 그리고 실제로 검색을 해봐도 동일한 의미인 것 처럼 작성된 글들을 종종 볼 수 있어 두 개념의 의미를 정리해보고 그 차이점을 비교해보고자 한다. 두 개념에 대한 설명은 Wik...

맨 위로 이동 ↑

TUTORIALS

JWT를 이용한 Spring Security 인증 구현

5 분 소요

사내에서 Spring Security를 이용한 JWT인증을 구현하면서 UsernamePasswordAuthenticationFilter와 같이 이미 구현되어있는 인증 구현체가 없어서 JWT를 이용한 인증 필터를 새롭게 구현하게 되었다. Session 기반 인증만 구현하면서 기존 구...

제품 개발을 위한 JIRA 사용 가이드

8 분 소요

이 글은 현재 몸담고 있는 팀에서 제품을 개발할때 JIRA를 활용하는 사례를 소개하고 이를 통해 JIRA를 활용하는 방법을 소개하기 위한 글이다. JIRA의 사용방법은 공식 페이지에 좀더 자세히 나와있으니 참고하고 이 글에서는 사용 시나리오를 기반으로 어떻게 JIRA를 활용하여 제...

Circle CI로 쿠버네티스에 Spring Boot 웹 어플리케이션 배포하기

12 분 소요

자동화된 배포는 어쩌면 현재 시점에서는 당연하게 받아 들이는 행위라 생각된다. 손으로 하는(자동화되지 않은) 배포는 실수를 유발할 위험성을 가지고 있으며 자동화된 배포에 비해 느리고 번거롭다. 이러한 장점으로 인해 많은 회사들이 자동화된 배포 파이프라인을 가지고 있으며 Jenkin...

Getting Started With Kotest

15 분 소요

최근 Kotlin을 이용하여 개발하면서 테스트 코드를 작성할때 Kotest를 주로 사용한다. 이전에 작성한 Comparing Testing Library for Kotlin을 보면 Kotest를 이용한 테스트 코드 작성의 장점에 대해서 적어 두었으니 읽어보면 좋을 것 같다.

Take advantage of Kotlin Fixture

4 분 소요

테스트코드를 작성하다보면 테스트 데이터를 필수적으로 수없이 생성해야 한다. 테스트 데이터를 생성하는 작업은 상당히 번거롭고 지루한 작업이다. 하지만 테스트 데이터를 어떻게 잘 작성하느냐에 따라서 테스트 코드의 가독성이 좋아지기도 나빠지기도 하며 중복되는 코드로 인해 테스트 코드의 ...

Active MQ Tutorial By Scenario

15 분 소요

이번 글에서는 Active MQ를 시나리별로 사용하는 방법에 대해서 작성해 보고자 한다.

맨 위로 이동 ↑

BOOK-REVIEW

맨 위로 이동 ↑

REFERENCE

기능 테스트 전환 이야기

26 분 소요

이 글은 사내 블로그에 작성한 기능 테스트 전환 이야기 내용을 그대로 가져오면서 나의 블로그의 언어톤에 맞게 변경한 글이다.

청구/수납 서비스 개발기

13 분 소요

이 글은 사내 블로그에 작성한 청구/수납 서비스 개발기 내용을 그대로 가져오면서 나의 블로그의 언어톤에 맞게 변경한 글이다.

우당탕탕 주문서 개발기

22 분 소요

이 글은 사내 블로그에 작성한 우당탕탕 주문서 개발기 내용을 그대로 가져오면서 나의 블로그의 언어톤에 맞게 변경한 글이다.

서버 언어 전환 이야기

8 분 소요

이 글은 사내 블로그에 작성한 언어 전환 이야기 내용을 그대로 가져오면서 나의 블로그의 언어톤에 맞게 변경한 글이다.

Message Queue Comparison

8 분 소요

사내 예약 시스템을 만들면서 서버간의 데이터 교환에 Message Queue를 사용하기로 결정하였다. Message Queue 기능을 제공하는 다양한 솔루션이 있는데 이중에서 어떤 것을 사용하면 좋을 지 알아보면서 Message Queue란 어떤것이며 종류가 어떤것 들이 있는지 알...

passwd options

2 분 소요

passwd는 unix나 unix계열의 운영체제에서 사용자의 암호를 변경하는데 사용하는 명령어 이다. 사용자가 입력한 암호는 보안상의 이유로 입력한 값을 그대로 저장하지 않고 해시값으로만 저장이된다.

맨 위로 이동 ↑

DISCUSSIONS

더 나은 테스트 문화 도입을 위하여

8 분 소요

요즘 개발자에게 테스트의 작성은 어찌보면 당연해 졌다. 많은 회사들이 테스트 작성 역량을 필요로 해서 테스트를 작성하는 것이 당연해 졌는지, 테스트를 작성하지 않아서 겪었던 안좋은 경험들이 쌓여서 테스트를 작성하게 되었는지, 다들 테스트를 작성해야한다고 말하니까 자신도 함께 작성해...

개발자의 소통의 중요성

4 분 소요

IT기술을 기반으로 성장하는 스타트업에서 개발 부서는 그 회사의 중심이라고 해도 과언이 아니다. 물론 마케팅이나 고객지원, 기획, 경영지원, 영업 등의 부서들도 회사에 없어서는 안될 중요한 부서이긴 하지만 서비스가 개발되지 않으면 그 기업이 존재할 수 없는 IT 스타트업의 특성상 ...

맨 위로 이동 ↑

RULE

게시글 작성 규칙

1 분 소요

게시글을 작성할때 규칙을 정해두고 작성하면 일관성있는 글을 작성할 수 있을것 같아 아래에 그 규칙들을 정하고 지키고자 한다. 규칙은 게시글을 작성하면서 계속 추가될 수 있다.

맨 위로 이동 ↑