전체 글 133

B Tree 계열의 알고리즘을 활용한 DB 인덱싱 튜닝

문제 정의게시판의 데이터가 많아질수록 DB에서 게시판을 불러오는 속도가 느려지는 상황 발생예상 원인Full Table Scan으로 인해 속도가 느려진다.인덱스 미사용으로 인한 비효율적인 검색디스크 I/O 증가 기술 선정기술설명장점Hash Index특정 값(=)에 대해 해시 테이블을 생성하여 빠르게 검색'=' 검색 속도가 빠름Full-Text Index긴 텍스트(TEXT, VARCHAR)에서 키워드 검색을 빠르게 수행특정 키워드 검색 최적화B+ Tree Index범위 검색(>, 특정 범위 검색에 효과적  B+ Tree 인덱스 선정 이유기존에 사용하고 있는 MariaDB에서 기존 테이블을 변경하지 않으면서, 범위 검색 성능을 최적화하기 위한 최적의 선택지는 B+ Tree 인덱스라고 생각하여 B+ Tree 기..

TIL 2025.02.28

DB 이중화 구현을 통한 DB 병목 현상 예방(with CQRS패턴 & Redis 캐싱 전략)

1. 문제 - DB 병목 현상 및 성능 저하모든 읽기(조회)와 쓰기(저장) 작업이 단일 데이터베이스(DB)에서 수행되면, 트래픽 증가 시 심각한 병목 현상이 발생높은 동시 요청 처리 시 DB 부하 증가, 응답 속도 지연, 트랜잭션 충돌 증가, 서비스 장애 가능성 증가캐싱(Redis)이 적용되어도, 근본적인 읽기/쓰기 처리 구조를 개선하지 않으면 한계가 존재  2. 원인 - 단일 DB 구조의 한계 및 CQRS 미적용읽기(SELECT)와 쓰기(INSERT, UPDATE, DELETE) 요청을 같은 DB에서 처리함으로써 트랜잭션 경쟁 발생읽기 트래픽(조회)이 과도할 경우, 쓰기 성능이 저하됨Redis 캐싱이 적용되더라도 DB 요청을 완전히 줄이지 못함 → 근본적인 읽기/쓰기 분리가 필요함CQRS(Command..

TIL 2025.02.25

Redis 캐싱 전략

문제 정의데이터 조회 시 속도가 느려 서비스 성능 저하반복적으로 동일한 요청이 발생하여 서버 부하 증가불필요한 DB 트래픽으로 인해 성능 저하 및 운영 비용 상승 원인데이터베이스의 조회 시간이 길어지는 경우동일한 요청이 빈번하게 발생하지만 캐시를 활용하지 않는 경우트래픽이 급증하는 순간에도 모든 요청이 DB에 직접 접근하는 구조캐시 없이 매번 데이터를 연산하여 조회하는 구조 해결목표 설정불필요한 트래픽을 줄이고, 서버의 부하 감소빠른 처리성능(조회)을 확보하여 고객에게 더 나은 서비스경험을 제공TTL(Time To Live) 설정주요 캐싱 대상 선정 캐싱 전략을 사용하기 전 주의 사항"용도에 맞지 않는 정보나 서비스요청에 캐시를 남용하게 되면 서비스 신뢰도에 큰 문제가 생길 수 있는 위험성을 내포한다."..

TIL 2025.02.25

Spring Security6를 활용한 인증 인가

문제 정의기존 인증 방식(세션)의 문제점은 서버가 상태를 유지해야 하며, 세션 데이터를 관리하는 데 많은 자원을 소모하여, Spring Security 6과 JWT 방식을 사용하여 확장성 있고 안전한 인증/인가 시스템을 구축하고자 했습니다. 선택 가능한 기술 분석항목세션 기반 인증JWT 기반 인증상태 관리서버에서 상태 관리(Stateful)클라이언트에서 상태 관리(Stateless)확장성서버와 세션 간의 동기화 필요서버에 상태 저장 X보안세션 ID 탈취 시 하이재킹 위험, 세션 고정 공격 위험토큰 탈취 시 위험성능서버가 세션 정보를 관리하므로 부하 발생 가능서버 부하 LOW, 대규모 트래픽 처리에 유리유지 관리서버가 세션 정보를 저장하므로 서버가 다운되면 세션 손실서버가 상태를 저장하지 않으므로 서버 ..

TIL 2024.12.27

Burp Suite 인터셉터를 활용한 웹사이트 보안 테스트

문제 정의웹 애플리케이션에서 OWASP Top 10 보안 취약점 중 SQL Injection과 XSS 취약점을 사전에 분석하고 이를 해결함으로써 보안 수준을 강화하고, 보안 위협을 예방하며 문제 발생 시 효과적으로 대응할 수 있는 시스템을 구축했습니다. Burp Suite란?Burp Suite는 웹 애플리케이션의 보안을 테스트하는 종합적인 취약점 스캐너이자 프록시 도구입니다. 웹 프록시, 웹 스파이더, 스캐너, 인트루더 등 다양한 도구를 포함하고 있으며, SQL 인젝션, XSS 등 다양한 취약점을 식별하는 데 도움을 줍니다. 테스트1. XSS 테스트Burp Suite의 Interceptor를 활용하여 OWASP Top 10에 포함된 보안 취약점 중 SQL Injection과 XSS에 대한 분석을 진행했습..

TIL 2024.12.27

Spring AOP와 예외처리를 활용한 로그 쌓기

문제 정의문제 발생 시 신속한 대처를 위한 서버에 요청되는 로그 관리 시스템 구축 선택 가능한 기술 분석기술설명장점단점ELK Stack(Elasticsearch, Logstash, Kibana)로그 데이터를 수집, 저장, 시각화하는 오픈 소스 스택실시간 로그 모니터링, 강력한 검색 기능, 대규모 로그 분석복잡한 설정 및 운영Datadog클라우드 기반 로그 관리 및 모니터링 서비스클라우드 기반, 실시간 모니터링, 다양한 통합 및 알림 기능유료 서비스로 비용 발생, 데이터 처리 지연 가능성 O 기술 선택 및 구현위와 같은 좋은 기술들이 있지만, 프로젝트 기간 동안 다른 작업들과 병행해야 했고, 로그 관리 작업은 우선순위가 낮은 추가적인 작업이었습니다. 따라서 새로운 기술을 도입하기보다는 이미 보유한 기술..

TIL 2024.12.27

Redis와 SMTP를 이용한 임시비밀번호 발급 기능

들어가며안녕하세요🙌:) 개발자 Bang99입니다.MOTIVE 프로젝트(ERP)에서 회원 도메인을 맡아 진행했으며, 진행한 이유와 어떻게 구현하였는지에 대해 설명드리겠습니다. 문제 정의MOTIVE 프로젝트(ERP)에서 회원 도메인을 담당하게 된 저는 로그인 화면에서 사용자가 비밀번호를 잊은 경우, 임시 비밀번호를 발급하는 기능이 필요하다는 요구사항이 있어 이를 구현하게 되었습니다. 이 과정에서 여러 기술적 선택지가 있었고, 각 기술의 장단점을 분석하여 최적의 방법을 결정하기 위한 고민이 필요했습니다. 선택 가능한 기술 분석기술장점단점Redis & SMTP- Redis는 빠르고 실시간 데이터 처리 가능- 이메일을 통한 안정적인 비밀번호 전달- Redis의 데이터 관리 필요- SMTP 이메일 서비스 설정 필..

TIL 2024.12.27

사용자 정의 예외 처리 및 서버 응답 구현

문제 정의웹 애플리케이션에서 다양한 응답과 예외 상황을 처리하는 과정에서, 프론트엔드에 불필요한 데이터가 포함되거나 일관되지 않은 형식으로 전달될 수 있는 문제가 있었습니다.  설계 목적이를 해결하기 위해, 모든 응답과 예외 상황을 체계적으로 관리하고 필요한 정보만을 추출하여 제공할 수 있는 공통 응답 객체와 전역 예외 처리 구조를 설계했습니다. 위와 같은 구조는 응답의 일관성을 유지하고, 유지보수성을 높이며, 예외 상황에서도 명확하고 간결한 데이터를 전달할 수 있도록 시스템의 안정성을 강화하는 데 중점을 두었습니다.  설계global└── common   ├── exception   │   ├── CommonException.java // 사용자 정의 예외 클래스   │   ├── ErrorCode...

TIL 2024.12.27

SHA-256 기반의 KISA 표준 암호화 알고리즘을 활용한 개인정보 보안 처리

1. 문제 정의개인정보를 다루는 시스템에서 보안은 가장 중요한 요소 중 하나로, 개인정보의 안전한 보호를 위해 다양한 암호화 기술이 사용되고 있습니다. 특히, KISA(한국인터넷진흥원)에서는 SHA-256을 표준 암호화 알고리즘으로 제안하며, 이를 활용한 데이터 보안을 권장하고 있습니다. 개인 식별 정보나 금융 정보 등을 안전하게 저장하고 전송하기 위해 신뢰할 수 있는 해시 알고리즘의 사용이 필요합니다. 2. SHA-256이란?SHA-256(Secure Hash Algorithm 256-bit)은 미국 국립표준기술연구소(NIST)가 개발한 해시 함수의 하나로, 데이터를 고유한 256비트 해시값으로 변환하는 암호화 알고리즘입니다. 이 알고리즘은 데이터 무결성을 검증하고, 기밀성을 유지하며, 인증을 제공하는..

TIL 2024.12.27

12월 3주차 회고록

한화 시스템 부트캠프를 수료하고 첫 주이다.이번주 나의 목표는 기본적인 이력서 및 자기소개서, 포트폴리오를 90%는 완성하고 이전 프로젝트 리팩토링 하는 것이였다.하지만, 학원을 다니기 전 나의 한량 백수 생활을 기대와는 다르게 뭐가 이렇게 일정이 빠듯한지 모르겠다. 연말이라 그런가? 아니면 내가 할 줄 아는게 생겨서 그럴까? 일정이 빠듯하지만 여유로운 나의 삶에 만족하면서 지내는 중이다.'포트폴리오' 라는 것이 형식이라는게 없고 정답이라는게 없다보니 정말 아무것도 못하고 여기저기 둘러보고 고민만하다 끝나는 하루도 있었다. 그래도 현재는 어찌저찌 열심히 써서 내용은 80%정도는 완성된 것 같다. 이제 이 내용을 어떤식으로 디자인 할지 정말 고민이 많다. 누가봐도 "우와~~" 할 정도로 만들고 싶다. 그래..