개발을 하다보면 여러가지 문제를 마주칠 때가 많다. 그리고 내가 겪는 대부분의 문제들은 누군가 이미 겪었을 확률이 99% 이기에 검색만 해봐도 대부분의 문제를 금방 해결할 수 있다. 예를 들어 티켓팅, 좌석예매, 선착순 이벤트 등 굉장히 유명한 문제에 대해서는 다양한
Intro 회사에서 새로운 프로젝트에 투입되었고 kotlin, spring webflux, r2dbc를 사용하기로 하였습니다. 회사의 기존 프로젝트는 mongoDB를 사용하느라 spring data mongo를 사용했었는데 새로운 프로젝트에서는 RDB를 쓰게 되면서 R
회사에서 진행하고 있던 프로젝트의 기능 중 하나가 유저의 추천인 코드를 업데이트 하는 것이었고 이 로직을 구현하면서 eventBus를 활용해보았습니다. 이 글은 eventBus를 만들고 활용한 예시에 대한 글이고 느낀점을 담았습니다.https://kwonnam
2023년 4월 11일 서비스 장애에 대한 기록 글입니다.현재 회사에서는 Error 레벨의 로그에 대해서는 슬랙 채널을 통해 알림을 받는 구조로 되어있습니다. 오전 10시 23분쯤 에러로그 채널에서 무한 메세지가 오기 시작했고 대부분 NullPointerExceptio
사내에서 AWS Document DB(v4.x)를 사용하고 있습니다. 최근에 이상한 동작을 발견해서 이 내용을 정리하고자 글을 작성했습니다.AWS Document DB공식 문서에 따르면 Amazon DocumentDB는 MongoDB와 호환되는 빠르고 안정적인 종합 관
Intro 기존 프로젝트에서 spring security 설정을 없애고 간단한 인증시스템을 구현한 것을 기록한 글입니다. 문제상황 as-is는 다음과 같았습니다. 굉장히 단순한 시스템입니다. 회원가입, 인증, 인가 모두 spring security의 의존성을 추가하
업로드중.. Intro 몇달전부터 Project Loom에 관한 이야기를 건너건너 듣게되었고 최근에 관련한 자료를 많이 접하게 되어 Project Loom이 무엇이고 이에 대해 정리해보기 위해 이 글을 작성하였습니다. Project Loom 이란 > the pri
이 글은 인프런의 자바 개발자를 위한 코틀린 입문의 영상을 보고 공부하면서 정리하는 글입니다. 목차 scope function이란 무엇인가? scope function의 분류 scope function이란 무엇일까? 이 코드를 리팩토링 해보겠습니다. 아래와 같이
이 글은 인프런의 Kevin의 알기 쉬운 RXJava 1부를 참고합니다.데이터를 생성해서 내보는 쪽 : 생산자생산자가 데이터를 내보는 것을 통지데이터를 소비하는 것을 소비자리액티브 프로그래밍 라이브러리의 표준사양입니다.https://github.com/reac
이 글은 인프런의 Kevin의 알기 쉬운 RXJava 1부를 참고합니다.위키피디아에서는 리액티브 프로그래밍에 대해 다음과 같이 정의 합니다.In computing, reactive programming is a declarative programming paradigm
자바 개발자를 위한 코틀린 입문 강의에서 9강 코틀린에서 클래스는 다루는 방법을 듣던 중 궁금한 점이 생겨 글을 작성하게되었습니다. 강의 내용에 따르면 코틀린에서는 기본적으로 부생성자보다는 default parameter를 권장한다고 하였습니다. 그리고 어쩔 수 없이
Intro 회사를 이직하면서 코틀린을 공부하게되었습니다. 이 글은 자바와 코틀린을 비교하면서 코틀린을 공부하던 중 Checked Exception에 대하여 자바와 코틀린의 처리 방식이 다르다는 것을 알게되었고 코틀린의 Checked Exception의 처리 방식에 대한
이 글은 인프런의 자바 개발자를 위한 코틀린 입문의 영상을 보고 공부하면서 정리하는 글입니다.자바의 코드 먼저 확인해보겠습니다. 아래의 코드는 안전한 코드일까요?javaString 변수에 null이 들어올 수도 있기 때문에 안전하지 않습니다.만약 위의 코드의 str변
이 글은 인프런의 자바 개발자를 위한 코틀린 입문의 영상을 보고 공부하면서 정리하는 글입니다.javaKotlin코틀린에서는 모든 변수에 수정 가능 여부(var/val)를 명시해주어야합니다.자바에서는 타입을 꼭 명시하지만 코틀린에서는 타입을 의무적으로는 작성하지 않아도
코딩으로 학습하는 GoF의 디자인 패턴의 영상을 참고하여 작성한 글입니다. Intro Decorator 패턴이란? 기존에 있는 코드를 변경하지 않으면서 부가적인 기능을 추가할 수 있는 매우 유용한 패턴이다. 특징 : 부가기능을 런타임에 추가할 수 있음(static
이번 글은 Ngrinder를 이용하여 성능테스트를 하고 TPS수치를 개선하는 과정을 작성하는 글입니다.nGrinder란 네이버에서 진행한 오픈 소스 프로젝트로 서버의 부하 테스트를 위한 도구입니다. 웹서비스를 하기전에 서버가 얼마나 많은 사용자를 수용할 수 있는지 요청
기존 코드에서 좋아요수를 증가하는 로직은 하나의 서버에 대해서 들어오는 요청에 대해서는 트랜잭션을 보장하지만 다중 서버인 경우에는 트랜잭션을 보장하지 않았습니다. 이 글은 이 문제를 겪고 해결하는 과정을 작성한 글입니다.기존 코드는 아래와 같았습니다.Post.javaP
Intro 하고자하는 것은 위와 같이 게시글에 대하여 조회수를 증가시키는 로직을 구성하는 것입니다. 이글은 조회수 증가기능을 구현하면서 했던 고민들과 방법을 작성한 글입니다. 기존 조회수 +1 코드 기존에는 게시글을 조회할 때 +1 해주는 방식을 사용했었습니다. 코
기획은 위에 보이는 게시글 화면과 같습니다.(내용은 무시해주시면 됩니다..ㅎㅎ) 이 글은 위의 기능을 구현했던 과정을 작성한 글입니다.우선 좋아요 버튼을 누르게 되면 무슨일이 일어나게 되는지 생각해보았습니다.1\. 좋아요를 누른 User가 다시 같은 글에 대해 좋아요를
사이드 프로젝트는 간단한 커뮤니티였고 기획에는 대댓글 기능이 있었습니다. 이번글은 spring data jpa와 querydsl을 활용하여 대댓글기능을 어떻게 구현했는지 작성해보겠습니다. 전체코드는 github링크에서 확인하실 수 있습니다."우리 댓글 기능도 넣자, 대