본문 바로가기

전체 글

(50)
MapStruct의 이해 배경이전 프로젝트는 Spring Cloud를 활용한 MSA 환경 구축해보기였습니다. 다들 처음이라 비동기 방식인 kafka를 사용하지 않고 feign client를 이용해 동기형식으로만 구성했죠. 정말 상당히 불편한 부분이었습니다. 예를 들어서 주문의 경우 다른 서비스들을 매우 많이 호출해야 했었는데, 동기형식으로 진행하지 반응 속도도 그렇고 한번 에러가 발생하면 어디서부터 보상 트랜잭션을 수행해줘야 할지.. 오히려 더 복잡한 느낌이었습니다. 그러다 다른 팀의 발표를 듣던 중 kafka를 이용한 팀이 있었는데, 이때 튜터님께서는 MapStruct를 이용하면 dto간 매핑이 간편해진다고 했던 기억이 있습니다. 이번 프로젝트는 kafka를 이용할 것이기 때문에 이 MapStruct에 대해 간단히 알아보려고 ..
Json 구조의 이해... 지금까지 Json 구조를 Java에서 어떻게 쉽게 매핑할 수 있을까를 생각해봤는데.. { } 를 기준으로 클래스 객체 단위라고 생각하면 편할 것 같다. 몇겹이든 간에, { } 단위로 받아들이면 잘 빼내올 수 있을듯!
CQRS와 ElasticSearch, Redis 관계 서로의 관계 및 간단 설명CQRS(Commands and Queries Responsibility Segregation) 패턴과 Elasticsearch, Redis의 관계는 주로 데이터 관리 및 성능 최적화와 관련이 있습니다. 아래에서 각 개념과 그 관계를 자세히 설명하겠습니다.1. CQRS 패턴CQRS는 시스템의 명령(Commands)과 조회(Queries)를 분리하는 아키텍처 패턴입니다. 이 패턴은 다음과 같은 이점을 제공합니다:명령과 조회 분리: 데이터 변경 작업과 데이터 조회 작업을 분리하여 각 작업에 최적화된 모델을 사용할 수 있습니다.성능 최적화: 조회와 명령의 요구 사항이 다르기 때문에, 각각에 맞는 데이터 저장소를 사용할 수 있습니다. 예를 들어, 복잡한 데이터 조회를 위해 읽기 전용 데..
[책] 1%의 노력 책 "1%의 노력'을 읽고, 개인적으로 와닿았던 부분을 정리해 놓았습니다. 1. 커다란 돌덩이를 먼저 찾자삶은 항아리와 같다. 가장 중요한 것, 즉 큰 돌덩이를 먼저 넣지 않으면 나머지는 의미가 퇴색된다. 자갈이나 모래는 나중에도 채워 넣을 수 있지만, 큰 돌덩이는 그렇지 않다.👉 질문: 내 인생에서 가장 큰 돌덩이는 무엇인가? 가장 먼저 채워야 할 핵심은 무엇인지 깊이 생각하자. 2. 환경이 행동을 만든다사람은 의욕만으로 움직이는 존재가 아니다. 적합한 장소와 환경이 주어질 때 자연스럽게 행동하게 된다. 아무리 의욕이 없어 보이는 사람도 장소를 바꾸면 전혀 다른 모습을 보인다.👉 핵심: 나를 움직이게 할 환경을 설계하자. 3. 솔직한 의견과 정중한 사과의견을 요청받았을 때, 두루뭉술하게 말하는 것은..
[웹소설] 오늘만 사는 기사 웹소설을 읽다가 살짝 마음에 남아 구절을 남겨봅니다.. 남과 나를 비교하지 말자, 배움과 겸손으로 나아가자어떤 일을 할 때, 나보다 남이 더 잘하는 모습을 보면 질투심이 들기 마련입니다. 하지만 질투보다는 그들의 잘하는 점을 배우는 자세가 필요하지 않을까요? 남의 실력을 인정하고, 나 자신을 받아들이는 겸손함이 중요한 것 같습니다."나보다 늦게 배운 사람이 나보다 잘하거나, 어린 사람이 나보다 뛰어나다고 해서 그것이 중요한 것은 아닙니다. 나는 나의 길을 걸어가는 것이니까요."이 말처럼 남과 비교하는 대신 나만의 속도와 길을 믿으며 걷는 것이 우리의 마음을 더욱 단단하게 만들어줍니다.힘을 빼고 주변을 둘러보는 여유"집중하는 것도 좋지만 너무 힘을 주면 주변이 보이지 않을 수 있습니다. 적당히 힘을 빼고 ..
웹소켓 배경프로젝트 주제를 팀원들과 정하면서 무엇을 해볼까 고민하던 중 오픈 채팅에 대한 이야기도 나오게 되었습니다. 팀원중 한분이 웹소켓을 써야 하지 않냐고 하셔서 어떤 것인지 궁금해 찾아보게 되었습니다. 웹소켓은 어떤것이고 왜 오픈채팅 같은 것을 사용할 때 필요한 것일까요? 내용예를들어 상대방과 같이 이용할 수 있는 체스 게임을 만든다고 해봅시다. 일반적인 http를 이용해서 구현을 할 수도 있겠지만 이렇게 구현을 하게 된다면 상대방이 체스를 옮길 때마다 새로고침을 통해 정보를 받아와야 합니다. 일반적으로 http는 비연결성인 특성을 가지고 있기 때문이죠. 새로고침 하지 않고도 실시간으로 정보를 받아올 수 있게 하는 것이 바로 웹소켓입니다. 게임, 채팅, 실시간 주식 거래 사이트 등에서 많이 사용하고 있는 ..
도커 스웜 배경하나의 호스트 OS에서 컨테이너가 많아지게 되면 CPU, 메모리, 디스크 용량 등과 같은 자원이 부족하게 됩니다. 이를 해결하기 위해선 어떻게 할까요? 크게 scale up과 scale out 방법이 떠오릅니다. scale up의  경우엔 하나의 서버 자체의 크기를 키우는 것이고, scale out은 여러대의 서버를 운영하게 하는거죠. 보통 scale out을 많이 사용한다고  알려져있는데 이때 클러스터라는 개념이 등장합니다. 클러스터란 각기 다른 서버들을 하나로 묶어 하나의 시스템같이 동작하게 만들어 클라이언트들에게 고가용성의 서비스를 제공하는 것을 말합니다. 하지만 서버 등록은 어떻게 할건지, 어떠한 서버에 어떠한 작업을 할당할건지 등과 같은 처리해야 될 작업이 증가하게 됩니다. 이때 나오게 된 ..
백트래킹 백트래킹(Backtracking)은 문제를 해결하는 과정에서 가능한 모든 경우를 시도하는 방법입니다. 쉽게 말해, 여러 선택지를 하나씩 시도해보면서 조건을 만족하는 해를 찾는 과정입니다. 만약 어떤 선택이 조건을 어긴다면, 그 선택을 취소하고 다른 선택을 시도하는 방식으로 진행됩니다.백트래킹의 기본 개념상태(State): 현재 선택한 값이나 설정.목표(Goal): 문제의 해결책.유효성 검사: 현재 상태가 목표를 만족하는지 확인.재귀 호출: 다음 상태로 넘어가는 과정.되돌아가기(Backtrack): 더 이상 진행할 수 없는 경우 이전 상태로 돌아가는 과정.예시: 부분집합 구하기부분집합 문제는 주어진 집합의 모든 부분집합을 구하는 문제입니다. 예를 들어, 집합 {1, 2, 3}의 모든 부분집합을 찾아보겠습니..