본문 바로가기
728x90

분류 전체보기157

Data Converting 을 왜 DTO Static 으로 처리할까? Domain entity 를 통해 db 조회 값을 가지고와서 처리 한 뒤 반환하기 위해 DTO로 값을 할당할 것이다.이것을 service layer나 controller 또는 repo class 내 직접하는 경우가 있는데 (new 로 객체 생성하여), 이렇게 하는 것보다 DTO 내 static 을 사용하여 정적메서드로 정의하면 클래스를 기반으로 객체를 만들지 않고 호출이 가능하며, 해당 메서드에 대해 한번만 메모리 할당할 수 있다는 장점이 있다. 2025. 4. 21.
Redis Cluster 설명 앞써 블로그에서는 docker file 기반의 redis를 어떻게 띄우는지를 설명했었다.하지만 실무에서는 이렇게 단일 redis 서버하나 띄워놓고 운용하기에는 리스크가 너무 크다.가장 큰 리스크는 서버 하나가 유일한데 그게 뻗어버리면?관련된 서비스가 마비될 것이다. 따라서, 원활한 서비스를 위해서는 2가지 중 하나를 선택해야 하는데 그중 하나가 Sentinel 이고 다른 하나가 Cluster 구성이다. 1. Sentinel - HA 지원, Master & Slave 의 Replica 구성 가능 - 과반수의 투표체계를 사용하기 때문에 홀수개의 redis를 구성해야한다.(그중 하나가 Master 나머지 두개가 Slave) - Sentinel 구성을 위해서는 기존 redis 와 별도의 추가 구.. 2025. 4. 21.
다빈치 리졸브에서 영상 짜르고 내보내기 인프런등과 같은 vod 기반의 강의를 작성할 경우, "편집"이라는 매우 귀찮은 작업을 하지 않을 수 없다 물론 영상을 찍을때 편집없이 하면되지만, 만약 10분 영상중 9분 50초까지 잘 찍다가 실수를 한경우라면? 10분을 다시 찍을 것인가? 아니면 실수한 부분만 도려내고 10초만 더 찍어서 영상을 합칠것인가?에 고민을 하게된다. 하지만, 대부분의 결론은 영상편집으로 갈 것이다.왜? 시간비용 효율적이니깐! 그럼 다빈치 리졸브에서 영상 중 가운데 부분을 도려 내려면?(맥기준) Edit Tab 에서 영상클립을 클릭하고재생위치를 짜를려고하는 시작점에 두고 Command + B 그리고 똑같이 종료지점에 두고 Command + B 를 하면 짜를부분이 선택된다. 그리고 Delete 클릭! orRipple Delete.. 2025. 4. 13.
spring-boot-starter-validation Java Spring 멘토링 중에 input 값에 대한 검증을 별도 DTO 나 entity 내 method를 만들어서 수행하는 멘티들이 종종 보였는데, 값에 대한 검증 (최소 숫자 등은) spring-boot-starter-validation 을 통해 DTO 단에서 간결하게 처리하고, 로직에 대한 validation 검증만을 비지니스 레이어 or 도메인엔티티 레벨에서 수행 하게 되면은 단일책임원칙을 준수하면서 관련된 비지니스 로직을 줄이고, 재사용성을 향상시킬 수 있다. 왜 그렇게 하지 않는걸까? 2025. 3. 29.
[Back-end] Node js or NestJS 기반으로 사용중인 "국내" 회사 리스트 [회사 현황 - 계속 update 예정] 1. 리디https://ridibooks.com/webtoon/recommendation 2. 토스https://toss.im/ 3. 당근https://www.daangn.com/kr/ 4. 클라썸https://www.classum.com/ko/ 5. 설로인https://www.sirloin.co.kr/ 6. 뤼튼https://wrtn.ai/ 7. 모두싸인https://modusign.co.kr/ 8. 아임웹https://imweb.me/ 2025. 3. 28.
Node.js 란? 인프런 강의를 시작하면서, 보다 원론적인 것부터 설명이 필요하다는 것을 느꼈다.(이는 실무중심의 멘토링 서비스를 제공하는 "항해플러스"의 시스템과는 상이한 부분이다.) Node.js란? 결론부터 말하면나무위키나 공식사이트를 참고하면, Node.js 는 Javascript를 브라우저 밖에서도 실행하게 해주는 런타임환경이다?라고 표현되어 있지만, Electron Framework 등 특정상황을 제외 하면, Javascript 언어로 서버환경을 구성하게 해주는 환경이다.즉, Node.js 로 공식사이트와 같이 아래와 같은 코딩을 하게 되면 웹서버 역할로써 Node.js 가 되는 것이다.const { createServer } = require('node:http');const hostname = '127.0... 2025. 3. 23.
NestJS 강의를 듣기 희망하시는 분들은 아래 링크 확인해주세요 ! https://inf.run/gsdZZ 커머스 서비스로 배우는 NestJS 실전 개발 (w. Prisma, Docker, Redis, Kafka) 강의 | 김빌 (Bill Kim) - 인프런김빌 (Bill Kim) | , 15년차 개발자가 알려주는NestJS 미드급 개발로 가는 길멘토링을 통해 많은 주니어 개발자를 만나보니, 기본적인 CRUD는 쉽게 만들지만, 동시성 제어와 Redis, Kafka를 활용한 부하 분www.inflearn.com NestJS 기반의 아키구성NestJS를 현업레벨에 맞도록 Prisma 세팅 및 개발Docker, Redis, Kafka 와 연계하여 개발목표 2025. 3. 20.
Typescript 성능개선 발표! (x 10) MS 사가 개발 관리 중인 Typescript 관련 하여 컴파일러와 Tool의 native 포팅을 통해 기존 성능에서 10배 이상 향상된 성능을 발표하였다!  자세한 내용은 하기 링크 참조! https://news.hada.io/topic?id=19695 10배 더 빠른 TypeScript | GeekNewsMicrosoft가 컴파일러와 도구의 네이티브 포팅을 통해 Typescript 성능 10배 향상 발표에디터 시작 시간 대폭 향상, 빌드 타임 10배 단축, 메모리 사용량을 대폭 줄임2025년 중반까지 tsc 미리 보기 버전news.hada.io 2025. 3. 13.
Valkey 란 무엇일까? valkey 는 redis 와 (거의) 같은거다!!무슨 말일까? Redis 가 라이센스 정책을 오픈 소스를 탈출? 하는것(https://redis.io/blog/redis-adopts-dual-source-available-licensing/)으로 결정 함에 따라 BSD 오픈소스 인 Valkey 에 관심이 쏠리는 것이다. Valkey은 Redis version 7.2.4을 folk 떠서 만든 것이고, redis 와 동일하게 in memory 저장소를 사용하며, caching, MQ, rua script, redis 가 지원하는 자료구조를 동일하게 지원한다. [공식 사이트]https://valkey.io/ ValkeyValkey is an open source (BSD) high-performance ke.. 2025. 3. 7.
(다음과정 미리보기) KRaft 를 이용한 Kafka 띄우기 2025. 3. 7.
KRaft 사용하여 Kafka 컨테이너 띄우기 1. KRaft 란?    : Kafka 의 기존 외부 의존성을 제거하고 Kafka 자체적으로 metadata 를 관리하기 위해 개발 됨     (기존에는 ZooKeeper 서버에 접속하여 관리하는 구조로써, ZooKeeper 를 대신하여 사용)  2. 왜 사용해야 할까?KRaft는 2021년 아파치 Kafka 2.8 버전과 같이 공개되었으며, Apache Kafka 3.7 버전이 Zookeeper 모드를 지원하는 마지막 버전이고, 이후 Kafka 4.0 버전의 경우는 KRaft 모드로만 사용 가능 3. 사용방법     : KRaft 모드를 사용하려면 주키퍼가 필요 없으며, 대신 Kafka의 자체 메타데이터 관리와 컨트롤러가 처리 4. Quorum     : 분산 시스템에서 결정을 내리거나 작업을 수행하.. 2025. 3. 7.
n 패키지로 node 버전 관리 시 경로 이슈 (installed, active) n 으로 전역 설치 후 node 버전을 관리하면서 사용중이다가 노드 버전을 변경해야할 일이 간헐 적으로 생긴다(최신 노드버전으로 프로젝트를 해야해서 노드 버전을 변경하는 경우도 있고 반대로 legacy 소스를 수정해야할 때도 과거 노드 버전으로 수정이 필요한 경우가 있다.) 이 경우 아래와 같이 n 을 전역으로 설치해서 사용하면되는데...npm install -g nsudo n lts 설치후 n 명령어를 입력한 뒤 엔터를 누르면 노드 버전이 바껴야 함에도 불구하고 변경되지 않는 경우가 있다.바로 설치된 node 위치와 active 된 node 위치가 다르기 때문에 링크를 변경해 줘야 한다.그럴 경우 아래와 같이 링크를 일치 시켜주는 명령어를 사용하면 된다! ln -sf installed_path acti.. 2025. 3. 1.
Elastic Cloud version 정보 공개(최신) [요약]7.17.x 버전 사용중일 경우 올해 12월 전으로 version upgrade 필요8.16.x의 경우 3월 전, 8.17.x 의 경우 6월 전, 8.18.x 의 경우 9월 전, 8.19.x 의 경우 26년 12월 전 upgrade 필요 단, 8.x 에 대한 support 는 27년 6월 전까지 진행 (LTS 로 보여짐) [버전 변경 시 참고사항]The following will be the supported upgrade paths to 9.1:Versions prior to 7.17 → 7.17 → 8.19 → 9.17.17 → 8.19 → 9.18.x versions prior to 8.19 → 8.19 → 9.18.18 → 9.0 → 9.18.19 → 9.19.0 → 9.17.x or ea.. 2025. 2. 25.
카프카는 어떻게 빠른 속도를 보이는 것인가? ( Kafka Buffer Pool ) 카프카는 어떻게 빠른 속도를 보이는 것인가? 디스크 기반의 저장소를 사용하는 카프카는 메모리 기반의 저장소를 사용하는 레디스보다도 더 좋은 성능을 보인다.(memory 처리속도와 SSD 처리속도는 아래의 그림을 참고하면 된다.) 요약하면 "120 나노 세컨드"와 "50~150의 마이크로 세컨드"의 차이다. (어마어마한 차이인 것이다.) 그럼 카프카는 어떻게 memory 기반의 redis를 MQ로써 사용할 때 보다 더 빠른 성능을 보이는 것인가?그건 바로 저장소는 disk 기반으로 작동하지만, disk 에 저장하기전에 memory buffer pool에 batch 형식을 기반으로 동작한다는 것이다. Producer 에서 메시지 이벤트를 발생시켜, 카프카 브로커로 전달될 때 로직레벨에서 이를 바로 디스크.. 2025. 2. 21.
멱등성 이란 ? idempotent 멱등성이란 무엇인가?: 연산을 여러번 적용하더라도 결과는 달라지만 안된다! 이게 무슨 말인가?아래와 같은 상황이 있다고 가정해보자 1. 사용자의 클릭 따닥!(한번 클릭을 했음에도 불구하고 실수 또는 화면변화가 없어 확인차 한번더 클릭을 하는 경우)2. MQ 의 사용으로 crash(충동) 이 났을때 위의 두경우 백엔드 서비스 로직에서 한번만 실행되어야하는 로직이 2번 이상 요청이 되어질 수 있다.이때, 동일한 요청에 대해 처리 되었을 때 이를 중복으로 간주하고 "한번만 실행되도록 하는 것이 바로 멱등성"이란 것이다! 그럼 어떻게 적용을 할 것인가? Transaction Id 와 같은 값을 할당해서 이게 중복요청임을 알려야한다. 기존 로직에서 이미 동일한 Transaction Id 가 있을 경우, 로직을 타.. 2025. 2. 18.
(다음과정 미리보기) MSA 서비스 개발하기 - 마이크로 서비스 개발 2025. 2. 11.
(다음과정 미리보기) MSA 서비스 개발하기 (Application Gateway 개발) 2025. 2. 11.
(다음과정 미리보기) EDA 패턴 적용하기 2025. 2. 11.
Azure AKS 사용 시 비용 감축 방안 1 AKS 를 사용하다보면은 비용에 대해서 항상 고민이 아닐 수 없다.(항상 고민이다.) 사용량과 네트워킹 량이 늘어남에 따라 비용이 증가됨은 어쩔 수 없지만, 불필요한 비용이 발생하는 부분은 꼭 방지하고 싶다오늘은 그 방지하는 방법 중 하나를 다뤄보려고 한다. 오늘의 관점은 AKS 로그 부분이다.AKS 내에서 node 내부의 상태를 계속해서 모니터링을 하는데 이 주기가 기본 모드는 빈번하다 보니 조정이 필요하다(log data 를 실시간으로 수집할 필요는 없지않는가? 매 초마다 수집되는 영역을 5분, 10분으로만 조정해줘도 네트워크 트래픽이 획기적으로 단축되고 이게 곧 비용감소로 이어진다!)  방법은 다소 간단하다AKS 내부 접속 후 Monitoring 내 insight 로 들어가자거기서 Monitor s.. 2025. 2. 10.
개발 총괄이란 자리는? 커머스 서비스 개발에 합류한지도 대략 1년 반이 다되어 간다.그동안 다양한 분야에서 경험을 쌓았고(글로벌하게...), 국내 시장 한정, 커머스 서비스를 기획, 개발, 관리까지 총괄하는 임무를 수행중이다. 이전에는 일을 할 때에는1. 기술레벨 향상에  20%,2. 기능개발에 70%,3. 개발에 필요한 기획 부분에 대한 검토가 10% 의 비중으로 수행하였다면, 지금은 (데일리 업무 기준)1. 기술레벨향상에 5%,2. 개발자 채용 및 개발문화 효율성 향상에 5%, 3. 아키텍쳐와 인프라, 개발 등의 업무에 50%,4. 스프린트 로드맵 및 개발 범위 선정 등의 기획에 20%,5. 개발자 관리에 10%,6. 기타 회의에 필요한 모든 시간투여가 10% 정도로 업무의 범위가 매우 다양해졌고 개발에만 집중할 수 있는 .. 2025. 2. 9.
728x90