전체 글75 Heap Dump 이전 직장에서는 Java와 Spring을 사용했지만, SI 환경 특성상 트래픽이 많지 않아 트러블 슈팅을 경험할 기회가 적었습니다. 이후 Node.js 환경을 거치며 Java 힙 덤프를 직접 다룰 일은 더욱 없었습니다. "개발자는 언제든 장애 상황에 대비되어 있어야 한다"는 멘토님의 조언을 계기로 힙 덤프 분석을 개인적으로 학습해둔 것이, 이직 후 트러블 슈팅에 큰 도움이 되었습니다. [문제 상황: 원인 모를 CPU 급증과 서버 다운] 새로 합류한 팀에서는 특정 시간대 트래픽이 몰리면 CPU 사용량이 급증하며 서버가 다운되는 고질적인 이슈가 있었습니다. 당시에는 원인을 정확히 파악하지 못한 채 서버를 스케일 업하거나 재부팅하는 임시 방편으로 대응하고 있었습니다.가장 큰 문제는 OOME(Out Of Mem.. 2025. 12. 29. RSA를 이용한 민감정보 암호화 적용 1. HTTPS만으로 충분할까?일반적으로 웹 애플리케이션 보안은 SSL/TLS(HTTPS) 전송 계층 암호화와 서버 내부의 단방향 해시(Hashing) 저장 방식이면 충분하다고 생각했습니다. 하지만 최근 애플리케이션이 복잡해지고, 다양한 보안사고등으로 인해 평문 노출/유출에 대한 우려가 생겼습니다.실수로 비밀번호 등을 로그로 찍는 순간, 비밀번호가 로그 파일에 남을 수 있습니다.로그에 접근 가능한 내부자나, 프록시 등을 탈취 가능성을 완전히 배제할 수 없습니다.내부 의사결정 후 브라우저에서 서버로 전송되는 구간에서도 데이터를 암호화하기로 결정했습니다. 2. 기술 검토: 대칭키 vs 비대칭키과거 다른 프로젝트에서 세션 기반의 대칭키(AES) 방식을 통해 비밀번호를 암호화하는 것을 본 적이 있습니다.기존 방.. 2025. 12. 15. [MySQL] 잠금은 어떻게 이뤄졌는가 안녕하세요. 백엔드 개발과 인프라 운영을 동시에 하던 (그리고 지금도 배우고 있는) 개발자입니다. 오늘은 과거 MySQL을 잘 모르던 시절, "DB는 쿼리가 전부"라고 착각하며 저질렀던 창피한 실수들과 그로부터 배운 교훈들을 공유하고자 합니다.1. 운영서버에 mysqldump예전 백엔드 개발과 동시에 인프라를 운영하던 꼬꼬마 시절이 있었습니다. (지금도 꼬꼬마입니다) 보수적이다보니 항상 백업에 대한 부분에 대해서 민감했는데 AWS RDS 백업설정을 다했음에도 무언가 작업 시 어떤 이슈가 터질지 몰라서 쉘을 통한 백업을 항상 수행해왔습니다. 물론 저는 MySQL을 잘 모르던 시절 백업을 하다보니 운영서버를 mysqldump를 뜨는 미친 짓을 수행했었죠 그리고 간간히 서버를 멈추게 만들었습니다. 창피한 얘기.. 2025. 11. 9. [Real MySQL] InnoDB 버퍼풀 MySQL은 데이터를 처리하고 캐싱하는 작업 공간으로 메모리를 적극적으로 활용합니다. 컴퓨터 자원의 효율성은 곧 속도를 의미하지만, 성능과 비용 사이에는 늘 트레이드오프(Trade-Off)가 존재합니다. 특히 데이터베이스(DB)는 수평 확장이 비교적 어려운 만큼, 제한된 리소스 내에서 최대의 효율을 뽑아내는 것이 중요하며, 그 핵심이 바로 메모리 관리에서 시작됩니다. InnoDB 버퍼 풀MySQL의 다양한 글로벌 메모리 영역 중, 실제 쿼리 성능에 가장 결정적인 영향을 미치는 것은 단연 InnoDB 버퍼 풀 (Buffer Pool)입니다.일반적으로 AWS RDS 파라미터는 DB 인스턴스 메모리의 약 3/4 (75%)를 기본값으로 설정하며, 업계 전문가들은 서버 메모리의 50%에서 80% 사이를 권장합니다.. 2025. 11. 8. [Real MYSQL 8.0] 설정 이야기 RDS 설정과 관련된 경험- 아래 내용은 Real MySQL 8.0 복습과정과 현재 운영/개발을 경험을 기반으로 작성되었습니다. 몇 달 전 운영 중인 서비스가 갑자기 커넥션 부족으로 마비되었던 사건있었습니다. 원인은 바로 SQL 인젝션(SQL Injection) 공격이었습니다.이 경험을 통해 MAX_EXECUTION_TIME이라는 시스템 변수 설정이 얼마나 중요한지, 그리고 이를 어떻게 현명하게 관리해야 하는지 깨닫게 되었습니다.1. 사건의 발단: SLEEP(25) 공격어느 날, 해외 IP로부터 비정상적인 트래픽이 감지되었고, 곧이어 DB 서버가 응답 불능 상태에 빠졌습니다. 로그를 분석한 결과, 공격자는 SQLMap과 같은 자동화 툴을 사용해 SLEEP(25)가 포함된 쿼리를 대량으로 전송하고 있었습니.. 2025. 11. 3. [쿼리 튜닝] 슬로우 쿼리 문제 해결하기/쿼리 성능 개선 스택NestJs(Node)AWS Aurora MySQL (MySQL8)TypeORM(ORM)React(NextJs) 개요초창기 서비스 대비 회사의 규모는 점점 커졌으며 다양한 기능들이 추가되었다. 대체로 빠른 속도로 기능을 개발하다보니 쿼리에 대한 리뷰가 부족했고 성능상 큰 문제를 야기하지 않았지만 점차 데이터가 쌓일수록 성능상에 문제가 발생했다. 물론 고객쪽에서 보여주는 API는 대체로 큰 문제가 없었지만 실제로 백 오피스에서 실행되는 쿼리는 슬로우 쿼리로 표기되었으며 동시에 실제로 사용함에 있어서 속도상의 큰 문제가 발생되었다 문제 확인백오피스에 대한 중요성은 사실 내부적으로도 동작의 여부와 정확도에 초첨을 맞춰왔다. 요건은 계속적으로 검색기능의 추가였고 여러 기술적 검토와 쿼리 검토없이 추가되어 .. 2025. 2. 4. 이전 1 2 3 4 ··· 13 다음