목록전체 글 (185)
솔솔
🍀 배경서비스를 운영하다 보면 DB에서 매번 데이터를 조회하기보다, 자주 사용하는 데이터를 애플리케이션 메모리에 올려두고 사용하는 경우가 있다. 내가 개발하고 운영하는 메세지 발송 서비스도 일부 데이터를 이런 방식으로 사용하고 있었다. 예를 들어 메시지 템플릿이나 다국어 문구처럼 요청이 들어올 때마다 DB에서 조회할 필요는 없지만, 애플리케이션에서는 반복적으로 사용되는 데이터들이 있다. 이 데이터들은 조회는 매우 자주 일어나지만 변경은 자주 발생하지 않는다. 그래서 애플리케이션이 시작될 때 DB에서 데이터를 읽어 메모리에 올려두고, 이후 요청에서는 DB 대신 메모리에 올라온 데이터를 사용하도록 구성했다. 성능 측면에서는 좋은 방법이었지만 한 가지 문제가 있었다. 🍀 문제 : DB 데이터를 수정해도 서..
🍀 배경개발 환경에서는 객체 상태나 처리 결과를 확인하기 위해 DEBUG 로그를 자주 사용한다.log.debug("{}", getMessage());운영 환경에서는 일반적으로 로그 레벨을 INFO 이상으로 설정하기 때문에 DEBUG 로그는 출력되지 않는다.그렇다면 DEBUG 로그가 비활성화되어 있을 때 getMessage()도 실행되지 않을까? 결론부터 말하면 DEBUG 로그가 출력되지 않더라도 getMessage()는 실행된다. 🍀 문제다음과 같은 코드가 있다고 가정해 보자.log.debug("{}", getMessage());현재 로그 레벨이 INFO로 설정되어 있다면 DEBUG 로그는 출력되지 않는다.logging: level: root: INFO하지만 여기서 확인해야 할 부분이 있다...
내가 맡은 백엔드 서비스에 이메일 발송 기능을 신규로 추가하게 되었음. 예약 확인 메일, 취소 안내 메일 등 실제 고객에게 발송되는 HTML 이메일을 직접 만들어야 했음.디자인은 디자이너에게 전달받았지만, 퍼블리싱은 직접 해야 하는 상황이었음. 처음에는 일반적인 웹 페이지를 만들듯 HTML과 CSS를 작성했음.하지만 실제 메일을 발송해보니 예상하지 못했던 문제들이 발생함.Chrome에서는 정상적으로 출력됨.Gmail에서는 일부 스타일이 사라짐.네이버 메일에서는 레이아웃이 깨짐.Outlook에서는 전혀 다른 형태로 출력됨.같은 HTML인데 메일 클라이언트마다 결과가 모두 달랐음. 이메일 HTML은 웹과 완전히 달랐음 웹 개발에서는 브라우저만 신경 쓰면 되는 경우가 대부분이었음.하지만 이메일은 전혀 다른 세..
🍀 WSL(Windows Subsystem for Linux)이란?WSL(Windows Subsystem for Linux)은 Windows에서 별도의 가상머신(VM) 없이 Linux를 실행할 수 있도록 제공하는 기능예전에는 Windows에서 Linux를 사용하려면 다음과 같은 방법을 사용했음.VMwareVirtualBoxHyper-V하지만 이러한 방식은 별도의 운영체제를 설치해야 하므로 CPU, 메모리, 디스크를 많이 사용하고 부팅 시간도 오래 걸림.WSL은 이러한 문제를 해결하기 위해 Microsoft에서 만든 기능으로, Windows 안에서 Linux를 거의 네이티브 수준으로 실행할 수 있음.🍀 WSL은 어떻게 가능한가?"Windows인데 어떻게 Linux가 실행되지?"라는 의문을 가지게됨. ..
🤔 문제IntelliJ에서 Claude CLI를 사용할 때 Esc 키를 눌렀는데Claude Code가 아니라 에디터로 포커스가 이동하는 문제 발생 Claude CLI에서 Esc 키는 자주 사용하는 핵심 제어 키인데IDE가 이 키를 먼저 가로채면서 Claude가 제대로 동작하지 않음 🛠 해결 방법 Settings → Tools → Terminal ✅ Move focus to the editor with Escape 체크 해제
# 현재 대화 컨텍스트 초기화(이전 대화 내용 전부 삭제, 완전히 새로 시작할 때 사용)/clear# 대화를 요약해서 컨텍스트 절약(토큰 절약 (속도 + 비용), 긴 대화에서 필수)/compact/compact 핵심만 정리# 이전 세션 선택해서 이어서 작업 (여러 작업을 병렬로 할 때 유용)/resume ⚠️ 실수했을 때 복구 방법1. 프롬프트 날려버렸을 때 (claude cli 켜져있는 상태)1. ESC 누르기2. /terminal-setup3. ↑ (위 방향키) 누르기4. 이전에 입력했던 프롬프트 복구 2. 터미널 창을 꺼버렸을 때 (claude cli 꺼져있는 상태)1. claude --continue2. 마지막 작업 세션 그대로 이어서 진행 가능
🍀 Filebeat 다운로드* 필자의 경우 Filebeat를 올릴 서버가 보안문제로 다운로드가 되지않아 로컬 컴퓨터에서 다운받아서 Filebeat로 올릴 서버로 옮김curl -fLO https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-9.1.4-linux-x86_64.tar.gzcurl -fLO https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-9.1.4-linux-x86_64.tar.gz.sha512sha512sum -c filebeat-9.1.4-linux-x86_64.tar.gz.sha512 # OK 나오면 정상🍀 Kibana UI에서 API Key 발급1.[Stack..
🍀 K6이란?부하 테스트(Load Testing) & 성능 테스트(Performance Testing) 도구(원래는 LoadImpact라는 회사가 개발했고 지금은 Grafana Labs에서 유지보수 중이라고 한다.) 🍀 K6 설치$ brew install k6 🍀 K6 설치 확인 $ k6 🍀 시스템 구성도 및 API에 부하를 주기 위해 K6 스크립트 작성✅ 시스템 구성도✅ 스크립트작성import http from 'k6/http';import { sleep } from 'k6';export default function () { http.get('http://localhost:8080/boards');} 🍀 DB 직접 조회와 DB + Redis 캐시 조회 환경 성능 비교조회를 ..