HTTP 200 OK

Memento mori & Carpe diem

분류 전체보기 51

JsonTypeInfo와 함께하는 다형성 구현

서론요구사항에 따라 여러 API를 만들다 보면 자동적으로 request dto도 변화가 발생합니다. API를 추가할 때 기존에 사용하던 dto와 별반 차이가 없다면 기존 것을 수정하는 방식을 통해 관리해 볼 수도 있겠죠 겹치는것이 많아진다면 공통 DTO를 만들어볼 수도 있겠습니다. 공통 DTO를 사용하기 애매할 경우에는 dto class를 늘리는 방법을 선택하고 있습니다. 하지만 비슷한 동작을 수행함에도 불구하고 약간의 차이가 존재한다는 이유만으로 새로운 API와 DTO를 추가하다보니 중복아닌 중복이 발생하는 느낌을 받았습니다. 앞으로 규모가 더욱 커진다면 유지보수가 복잡해지겠다는 느낌도 받았습니다. 앞선 문제를 해결할 수 있는 방법중 하나가 JsonTypeInfo 라고 생각합니다. 개요JsonTypeI..

Spring 2024.05.11

event storming이란?

정의DDD설계를 가속화 시킬 수 있는 설계 방법으로 이벤트 중심으로 이해관계자들이 모여 브레인스토밍 하는 워크샵이라 하여 이벤트 스토밍 이라고 부른다. 사용이유MSA를 구축하여 DDD 전략적 설계를 할 때 의존성을 줄이기 위해서는 아키텍처 영역에서 서비스 간 비동기 메시지기반 도메인 이벤트를 활용하는 것이 중요한데 이러한 도메인 이벤트를 통한 의존관계 식별 방법이 용이하지 않기 때문에 이를 한눈에 파악하기 위해 사용한다.  순서도메인 이벤트 식별 > 커맨드 식별 > 외부 시스템 도출 > 엑터 식별 > 흐름 설명 > 어그리게잇 식별 > 컨택스트 경계 정의 > 정책 식별 > 컨텍스트 매핑 도메인이벤트 도출시간의 흐름에 따라 비지니스의 상태 변경을 의미하는 도메인 이벤트를 도출한다. 참여자들은 이벤트 명을 작..

CS 2024.04.28

쿠버네티스 파드 라이프사이클(Feat. 고아파드)

k8S Pod Lifecycle 정의 파드는Pending 단계에서 시작해서, 기본 컨테이너 중 적어도 하나 이상이 OK로 시작하면 Running 단계를 통과하고, 파드의 컨테이너가 실패로 종료되었는지 여부에 따라 Succeeded 또는 Failed 단계로 이동합니다. 파드가 실행되는 동안, kubelet은 오류를 처리하기 위해 컨테이너를 다시 시작하기도 합니다 . 파드 내에서, 쿠버네티스는 다양한 컨테이너 상태를 추적하고 파드를 다시 정상 상태로 만들기 위한 조치를 결정합니다. Kubelet은 Kubernetes 노드에서 실행되는 에이전트로, 클러스터의 마스터와 노드 간의 통신역할을 수행하며 노드 내의 모든 파드 상태를 감시하고, 파드의 요청에 따라 컨테이너를 실행 및 관리합니다. 또한 클러스터에 등록되..

Kubernetes 2024.03.31

(국내)무료 오픈 api 추천 리스트 모음

현업에서나 사이드 프로젝트를 진행할 때 오픈 api를 활용해보신 경험이 한번쯤은 있으실 겁니다. 필자는 현재 프로젝트에서도 오픈 api를 사용하고 있습니다. 그러던 와중 과연 어떤 영역까지 데이터를 활용해볼 수 있을까?? 라는 호기심이 생겨 이 글을 작성하게 되었습니다. 자료를 찾다보니 다양하고 많은 오픈 api가 존재하기 때문에 이런것도 있었나?.. 싶은 오픈 api들이 많았습니다. 카테고리 별로 정리하고 싶었지만 카테고리로 특정화 시키기에는 다용도로 활용할 수 있는 오픈 api들이 많아 리스트로 정리 했습니다. 1) 공공데이터 포털 특징 국가에서 보유하고 있는 다양한 공공 데이터를 활용할 수 있는 곳입니다. 따라서 개인이 수집할 수 없는 사업자 번호 인증, 날씨 정보, 상권 정보 등을 제공하고 있습니..

기타 2024.03.17

Decode, Encode, Parse, Stringify 개념과 사용

웹 개발을 하다보면 데이터 변환에 대한 경험을 반드시 마주하게 됩니다. Decode, Encode, Parse, Stringify 와 같이 데이터 형식을 변화시키는 것에 대한 정확한 개념과 언제 사용해야 하는지에 대해 작성해보려고 합니다. 평소 깊게 생각하지 않고 상황에 따라 사용해왔기에 개념 정리를 해보려고 합니다. 예시로 작성된 코드는 파이썬입니다. Decode 디코드는 변형된 형태로 저장된 데이터(인코딩 데이터)를 원래 상태로 되돌리는 것을 말하며 이를 복호화 라고 합니다. 예를 들어 텍스트를 Base64로 인코딩한 경우, 디코딩은 Base64로 인코딩된 텍스트를 다시 일반적인 ASCII나 유니코드 텍스트로 변환하는 것을 말합니다. import base64 encoded_text = 'SGVsbG8..

CS 2024.02.17

주니어 개발자의 개발문화 변화시키기(Part. 1)

현재 회사에 입사한지 어느덧 1년이 넘어가고 있는 주니어 개발자입니다. 시간이 참 빠른 것 같습니다.. 저는 재직 중인 회사에서 백엔드 개발자로 업무를 진행하는 도중 시니어개발자 분들이 퇴사를 하시면서 주니어끼리 업무를 하는 시간이 꽤나 길어졌습니다. 테크리드가 없다는 사실은 뼈아픈 일이였고 최근들어 많은것을 느껴서 팀 내 개발문화를 변화시키고 싶은 결심을 하게되었습니다. 비슷한 상황에 놓이신 분들을 위해 저의 개발문화 적용과정과 생각들을 공유드리려고 합니다!! 미니언즈는 주니어 개발자와 이미지가 비슷하다고 생각해서 넣어봤습니다 ㅎㅎ 왜 개발문화를 변화시키고 싶은 생각이 들었나??  첫 시작은 우아한 테크세미나에서 '어느 날 시니어가 사라졌다'라는 발표 영상을 보게 되었는데 시니어 없이 주니어끼리 개발문..

활동 2024.01.21

Rancher Desktop

Rancher Desktop을 사용하던 중 문득 이것에 대해 잘 알지 못한다는 생각이 들었습니다. 그래서 생각이 난 김에 가볍게 개념을 정리해보려고 합니다. Docker Desktop 의 유료화로 인해 그에 대한 대처방안으로 VM + minikube 또는 Rancher Desktop 이렇게 크게 2가지로 대체하는 것 같습니다. 1. VM + minikube minikube 는 가벼운 쿠버네티스 구현체이며, 로컬 머신에 VM 을 만들어 하나의 노드로 구성된 간단한 클러스터를 생성하는 로컬 쿠버네티스 엔진이다.(쿠버네티스와 비교하자면 쿠버네티스는 컨테이너의 클러스터를 단일 시스템으로 관리하는 것) 쿠버네티스는 마스터 노드와 하나 이상의 워커 노드로 구성되어 있는데 단순 개발 테스트를 위해 플랫폼 구성이 어려..

Kubernetes 2024.01.06

BlockHound - Blocking 코드 존재여부 확인

사용이유 Spring Webflux나 Coroutine을 사용할 때는 모든 코드가 reactive 하게 동작하길 원합니다. 비동기 처리를 하면서 느낀내가 만든 코드가 점은 비동기로 데이터가 처리되는것인지 동기형식으로 처리되는 것인지 확인해볼 수가 없다는 것이였습니다. 그저 비동기 문법에 맞게 코드를 만들었을뿐.. 즉 비동기로작성한 코드에 blocking 코드가 존재하는지 확인해주는 도구가 바로 blockhound입니다. BlockHound란? BlockHound는 webflux 에서 사용하는 reactor 팀에서 개발한 도구로 애플리케이션에서 blocking 코드가 작성되었는지 여부를 검출해주는 도구입니다. 직접 작성한 코드 뿐만 아니라, 서드 파티 라이브러리에서 사용한 블로킹 코드도 전부 검출합니다...

Spring 2023.12.24

Nginx Proxy vs API Gateway(Part. 2)

Gateway와 Nginx Proxy의 차이는? API 프록시와 API 게이트웨이는 모두 기존 API 앞에 위치하여 게이트키퍼처럼 작동하지만 기능에는 큰 차이가 있습니다. 대부분의 경우 API 게이트웨이는 API 프록시가 수행하는 모든 작업과 그 이상을 수행할 수 있습니다. 기능 측면에서 볼 때 아래 다이어그램에 표시된 것처럼 API 프록시는 API 게이트웨이가 보유한 기능의 하위 집합만 있다고 합니다. 그렇다면 Proxy는 Gateway의 완벽한 하위호환일까요?? 개인적으로는 그 간의 설명들을 살펴보니 proxy 자체와 비슷하다기보다는 reverseProxy와 Gateway의 개념이 일치하는 것으로 생각됩니다. 하지만 reverse Proxy가 Gateway와 일치하는 개념이라고 보기에는 석연찮은 부분..

CS 2023.12.20

Nginx Proxy vs API Gateway(Part. 1)

웹 개발자들 대부분은 nginx를 사용해 봤거나 한번쯤은 들어보셨을 거라고 생각합니다. 요즘은 업무중에 K8S와 함께 사용해보니 nginx-ingress라는 개념도 나오고 api gateway도 함께 적용하고 있어서 기초부터 다잡고 싶은 마음에 nginx와 gateway의 차이점과 개념적인 부분들을 정리하고 정확히 이해하기 위해 글을 작성했습니다. 지금부터 nginx와 proxy 그리고 gateway까지 전반적인 개념을 살펴보겠습니다. nginx란? Nginx는 가벼움과 높은 성능을 목표로 하는 웹 서버 소프트웨어로, 웹 서버, 리버스 프록시 및 메일 프록시 기능을 가진다. https://ko.wikipedia.org/wiki/Nginx Nginx는 정적 파일을 제공(HTML, CSS 등)하는 웹서버의 ..

CS 2023.12.09