전체 글 364

09. 10 TIL : AWS 비용 최적화 - 독서

참고 : 1인 SaaS 개발자를 위한 AWS 비용 최적화 — 월 서버비 40만원에서 20만원으로 줄이기 https://wikidocs.net/book/20925 1인 SaaS 개발자를 위한 AWS 비용 최적화 — 월 서버비 40만원에서 20만원으로 줄이기트래픽이 크지 않은데도 AWS 청구서가 늘 예상보다 많이 나오는 1인 SaaS 개발자를 위한 비용 최적화 실전 가이드. 컴퓨팅, 스토리지, 데이터베이스, 네트워크 비용을 단계별로…wikidocs.net 서비스의 클라우드 비용을 줄이기 위한 노력- 쓰지않는 EC2 중지 및 EBS 볼륨 삭제- 등록되지 않은 AMI 삭제- 탄력적 IP 조정- 사용하지 않는 RDS 중지 및 자동 스냅샷 기간 조정- RDS 스토리지 타입 수정- 불필요한 코드 파이프라인 및 ECS..

TIL, WIL/TIL📘 2026.09.10

Udemy : Docker & Kubernetes 실전 가이드 (9) - 2

ECS - 컨테이너 자동 배포 서비스ECS의 주요 작업 단위는 클러스터 > 서비스 > 태스크 > 컨테이너 4가지로 나뉘며, 오른쪽으로 갈 수록 더 상세한 작업 단위이다 Docker 이미지를 기반으로, 하나의 Task 안에 여러 개의 컨테이너를 정의할 수 있다{ "family": "my-app", "containerDefinitions": [ { "name": "web", "image": "nginx:latest", "cpu": 256, "memory": 512, "portMappings": [ {"containerPort": 80, "hostPort": 80} ], "essential": true }, { ..

Slack 클론코딩[백엔드 with NestJS + TypeORM] (2)

핫 리로드 : 코드 수정하고 저장시 서버 재시작 없이 바로 반영하는 기능 ~ 스프링과 달리 별도 설치해야함 공식 문서 참고https://docs.nestjs.com/v5/techniques/hot-reload Documentation | NestJS - A progressive Node.js frameworkNest is a framework for building efficient, scalable Node.js server-side applications. It uses progressive JavaScript, is built with TypeScript and combines elements of OOP (Object Oriented Programming), FP (Functional Progra..

Slack 클론코딩[백엔드 with NestJS + TypeORM] (1)

nestJs 세팅 npm i -g @nestJs/cli- 터미널 라이브러리 설치 프로젝트 생성 시 물어보는 observe 라이브러리 : 어플리케이션 모니터링 매커니즘1) 로깅 & 트레이싱2) 메트릭 : 서버 사용량 통계3) Open Telemetry 연동 : 프로메테우스 등 표준 모니터링 도구와 연동이 쉽도록 자동 구성+ API키를 발급받은 후 사용가능, 그렇지 않으면 401 반환ERROR [ObserveAgentWorker] Error: Telemetry rejected (401). Check that appKey and appSecret are valid; the application is taken from the key. Credentials are read once at start-up, so ..

Event Programming in Spring : Kafka vs Spring Message Broker vs Spring Application Events

1. 카프카 (Kafka)성격: 외부의 분산 스트리밍 플랫폼 (Distributed Streaming Platform)이자 메시지 브로커범위: 주로 애플리케이션 간 (Inter-application) 또는 서비스 간 (Inter-service) 통신에 사용즉, 프로젝트의 다른 마이크로서비스나 외부 시스템과 이벤트를 주고받을 때 적합하다특징:- 영속성 (Persistence): 메시지를 디스크에 저장하여 영속성을 보장한다. 컨슈머가 다운되었다가 다시 시작해도 놓친 메시지를 처리할 수 있다- 확장성 (Scalability): 대량의 데이터를 처리하고 높은 처리량을 가질 수 있도록 설계된다. 여러 브로커로 구성된 클러스터를 통해 수평 확장이 용이하다.- 내결함성 (Fault Tolerance): 브로커 중 일..

Spring🍃 2026.07.22

엑셀 다운로드를 위한 엑셀 생성 로직 리팩토링 : 시트 자동 생성 및 처리 속도 개선

https://cdaosldk.tistory.com/346 엑셀 다운로드를 위한 엑셀 생성 로직 리팩토링 : 속도 개선https://cdaosldk.tistory.com/344 엑셀 파일 생성 로직 구현 : Map 활용, 클래스 단위로 응용 가능1. 문제점 파악 기존 구글링을 통한 엑셀 다운로드 로직들을 살펴보면서 스터디 하던 도중, 전부 컨트롤cdaosldk.tistory.com 이전에 작성했던 로직에서 개선한 부분을 정리해본다0. 개선한 전체 코드import org.apache.poi.ss.usermodel.*;import org.apache.poi.xssf.streaming.SXSSFWorkbook;import org.springframework.stereotype.Service;import pro..

자바☕ 2026.07.17

2진수와 10진수, 차이에 대해서

1. 본질적인 차이10진수는 총 10개의 숫자를 사용하고, 값이 9를 넘어가면 자릿수가 올라간다. 반면 2진수의 경우는 0과 1만 있기 때문에 1이상은 자릿수가 올라간다 2. 10진수를 2진수로 변경하기10진수를 더이상 나눌수 없을 때까지 2로 나누고, 그 나머지를 거꾸로 읽는 것이다 2 ) 13 --- 나머지 1 (가장 마지막 자릿수) 2 ) 6 --- 나머지 0 2 ) 3 --- 나머지 1 1 --- 나머지 1 (가장 앞 자릿수) 3. 왜 프로그래밍에서 이진수 변환을 자주 쓸까?"두 가지 상태(선택지)만 존재하는 상황"을 표현할 때 이진수가 완벽하게 매핑되기 때문이다.이를 컴퓨터 과학에서는 비트마스킹(Bitmasking) 또는 조합(Combination) 생성이라고 부른다...

RDB 설정 : SQL Mode

RDB에서 DB 서버가 SQL 구문을 어떻게 해석하고, 유효성 검사의 척도를 지정해줄수 있는 방법이다 1. 많이 사용하는 mode1) STRICT_TRANS_TABELS데이터 타입이 맞지 않거나 범위를 벗어난 값을 입력할 때 에러를 발생시킨다- 꺼진 경우 : 숫자가 데이터 타입의 최대치를 벗어난 경우, 최대치만큼만 저장하고 경고한다-> 해당 모드를 켜야 DB가 값 입력을 거부하고 rollback 한다 2) ONLY_FULL_GROUP_BYGroup by 절을 사용할 때 선택목록에 집계 함수나 Group by에 포함되지 않은 컬럼이 있는 경우 쿼리를 거부한다. SQL 표준 준수를 위한 모드 3) NO_ZERO_DATE / NO_ZERO_IN_DATE0000-00-00 같은 유효하지 않은 날짜의 입력 허용 ..

RDB🗂️ 2026.04.06

03. 26 TIL : 도커의 편리함 깨닫기

쉘 스크립트를 사용해 배포하는 과정에서 온갖 시행착오를 겪었다. 너무 불편하고 신경쓸게 한 두개가 아니더라. 1) 리눅스에서 매번 권한설정하기 : sudo 지옥 2) VPC마다 다른 환경과 경로에 맞춰 설정해야 한다(그나마 단일 VPC 환경에서 작업해서 이 정도지, 여러 개로 늘리는 순간 개 헬일듯) 3) 실행 명령어에 환경 변수 설정이 빠졌는지를 매번 확인해야함-> 도커는 도커파일 또는 compose.yaml에 적어두면 신경쓸 필요가 없다 4) 모든 실행 환경에 필요한 언어 등을 직접 설치해야함 : 말해 뭐해, 최악 도커의 단점은..이미지의 용량이 크다는 것?러닝 커브가 좀 있다는 것 정도인 것 같다. 정말 빡센 경험이다.그래도 이런 경험을 해야하는 이유가 있다. 왜 좋다고 하는지를 몸소 깨달을 수 ..

TIL, WIL/TIL📘 2026.03.27

LLM 서비스를 위한 컨텍스트 관리 w. redis

FastApi 프레임워크를 기반으로 한 LLM 서비스를 구현하는 도중, LLM에 쿼리를 보내는 과정에 있어,컨텍스트(대화 문맥, 흐름 ~ 여기서는 LLM이 기존에 사용자와 대화한 내용을 기억하기 위해 필요하다) 관리의 필요성을 느끼게 되었다 * 왜 Redis를 사용해야 할까?1. 빠른 조회 속도 : Redis는 메모리 기반 데이터베이스로서, ms 단위 응답을 보장하기 때문에, 가볍고 빠르게 조회가 가능하다2. TTL : Redis 자체적으로 제공하는 TTL 기능을 통해, 이력에 대해 일정 주기로 삭제를 진행해, 이력에 대한 용량 부담을 덜 수 있다3. (추후 구현 해볼 예정) 벡터 DB 역할에 보다 특화되어, RAG를 위한 시맨틱 캐싱에 활용된다 * 비교해볼만한 다른 DB1) PostgreSQL : 이력..

NoSQL🗂️ 2026.02.11