2025/01 34

[웹 보안] 디렉터리 트래버설(Directory Traversal) 공격이란?

디렉터리 트래버설(Directory Traversal) 공격이란?웹 애플리케이션을 개발할 때, 파일을 다루는 기능은 필수적입니다. 하지만, 사용자의 입력을 검증 없이 파일 경로로 사용할 경우 디렉터리 트래버설(Directory Traversal) 공격에 노출될 수 있습니다. 이번 글에서는 디렉터리 트래버설이 무엇인지, 공격 방식과 실제 예제, 그리고 이를 방어하는 방법을 정리해보겠습니다.🔍 디렉터리 트래버설(Directory Traversal) 개념**디렉터리 트래버설(Directory Traversal, 패스 트래버설)**은 공격자가 파일 시스템을 탐색하여 허가되지 않은 파일에 접근하는 보안 취약점입니다. 웹 애플리케이션이 사용자 입력을 기반으로 파일을 읽거나 로드하는 경우, 공격자는 ../ 같은 디..

Network 2025.01.30

[운영] 비동기 처리와 Thread Pool을 활용한 API 성능 최적화

멀티스레드 기반 API 성능 개선: 실전 적용 및 사례 분석API 성능이 느려지고 응답 속도가 지연된다면?**멀티스레딩(Multi-threading)**을 활용하여 성능을 최적화하고 처리 속도를 향상시킬 수 있습니다.이번 글에서는 멀티스레드 기반 API 성능 개선을 위한 개념, 적용 사례, 코드 예제를 함께 살펴보겠습니다.📌 멀티스레딩(Multi-threading)이란?멀티스레딩은 하나의 프로세스 내에서 여러 개의 스레드를 동시에 실행하는 방식입니다.기본적으로 싱글스레드와 비교하면 다음과 같은 차이가 있습니다.실행 방식 설명싱글스레드(Single-threading)한 번에 하나의 작업만 처리멀티스레드(Multi-threading)여러 개의 작업을 동시에 실행하여 응답 속도 향상📌 멀티스레딩을 활용하는..

운영 2025.01.30

[도서] 도메인 주도 설계로 시작하는 마이크로서비스 개발 – 실무와 연결된 인사이트

저자: 한정헌, 유해식, 최은정, 이주영출판사: 위키북스1. 이 책을 읽게 된 계기마이크로서비스 아키텍처(MSA)는 최근 몇 년간 빠르게 확산되며 많은 개발팀이 이를 도입하고 있다. 그러나 단순히 서비스를 작게 나눈다고 유지보수가 쉬워지는 것은 아니다. 중요한 것은 각 서비스가 독립성을 유지하면서도 하나의 시스템처럼 원활하게 동작하도록 설계하는 것이다.개발을 하면서 "이 서비스를 어디까지 독립적으로 분리할 수 있을까?" 라는 고민을 자주 하게 된다. 특정 도메인의 기능을 설계할 때, 향후 기능이 확장되더라도 유연하게 대응할 수 있는 구조를 만드는 것이 중요하다. 하지만 서비스 간 강한 의존성이 발생하면, 오히려 모놀리식보다 더 복잡한 시스템이 되어버리는 문제가 생길 수 있다.실무에서도 여러 개의 서비스가..

도서 2025.01.30

[leetcode][JAVA] 385. Mini Parser (스택)

💡 문제mini-parser (https://leetcode.com/problems/mini-parser/description/)자세한 문제 설명과 입출력 예는 링크를 참고해주세요. 총 소요 시간: 35~55분 💡 문제 (문제 설명 (한글 번역))문자열 s가 중첩된 리스트의 serialization을 나타냅니다. 이를 deserialize하는 파서를 구현하여 deserialized된 NestedInteger를 반환하세요.NestedInteger는 다음 두 가지 중 하나를 가질 수 있습니다:단일 정수정수 또는 다른 중첩 리스트를 포함하는 리스트예제 1입력: s = "324"출력: 324설명: 단일 정수 `324`를 포함하는 NestedInteger 객체를 반환합니다.예제 2입력: s = "[123,[4..

[도서] 면접을 위한 CS 전공지식 노트 독후감

독후감이 책은 컴퓨터공학을 전공했거나 IT 업계에서 취업을 준비하는 사람들에게 매우 유용한 내용을 담고 있다. 특히, IT 면접에서 자주 다뤄지는 CS 전공 지식을 체계적으로 정리해 놓아 취업 준비생뿐만 아니라 실무에서 사용하는 지식을 보완하려는 개발자들에게도 큰 도움이 된다.책은 크게 운영체제, 네트워크, 데이터베이스, 자료구조, 알고리즘 등의 주요 CS 분야로 나뉘어 있으며, 각 주제마다 핵심적인 내용을 명확히 설명하고 있다. 또한, 단순히 개념만 나열하는 것이 아니라, 실제 면접에서 나올 만한 질문을 바탕으로 답변과 해설을 제시해 실전 대비에 초점이 맞춰져 있다.주요 장점효율적인 구성책의 가장 큰 장점은 방대한 CS 지식을 짧은 시간 안에 효율적으로 학습할 수 있도록 구성되어 있다는 점이다. 각 주..

도서 2025.01.27

[Spring Framework] 스프링 싱글톤: 실제 업무에서 마주하는 문제와 해결 방법

실제 업무에서 마주하는 문제와 해결 방법스프링을 사용하다 보면 개발자라면 누구나 한 번쯤 들어보는 개념이 바로 **싱글톤(Singleton)**입니다. 스프링 컨테이너(ApplicationContext)가 기본적으로 빈(Bean)을 싱글톤으로 관리한다는 사실은 많이 알려져 있지만, 이를 제대로 이해하지 못하면 예상치 못한 문제를 마주할 수 있습니다. 특히, 멀티스레드 환경에서의 동시성 문제, 빈 스코프의 잘못된 활용, 또는 상태 관리 실수 등은 실제 업무에서 흔히 발생하는 상황입니다.이번 글에서는 스프링의 싱글톤이 왜 중요한지, 그리고 이를 실제 업무에서 어떻게 체감할 수 있는지 살펴보겠습니다. 또한, 흔히 발생하는 문제와 해결 방법을 함께 다뤄 안정적인 애플리케이션 설계를 위한 실질적인 팁을 공유합니다..

[Spring Framework] 스프링 컨테이너의 싱글톤: 왜, 어떻게 관리될까?

스프링 컨테이너의 싱글톤: 왜, 어떻게 관리될까?스프링 프레임워크를 사용하다 보면 "싱글톤"이라는 용어를 자주 접하게 됩니다. 싱글톤은 객체 생성 방식에 큰 영향을 미치며, 애플리케이션 전반에 걸쳐 효율적인 리소스 관리와 코드 구조를 단순화하는 핵심 개념입니다. 이번 글에서는 스프링 컨테이너의 싱글톤이 무엇인지, 자바의 싱글톤 패턴과 어떤 차이가 있는지, 그리고 싱글톤 사용 시 주의할 점에 대해 다뤄보겠습니다.1. 싱글톤이란?**싱글톤(Singleton)**은 단 하나의 객체만 생성되도록 보장하는 디자인 패턴입니다. 주로 애플리케이션에서 전역적으로 공유해야 하는 리소스를 관리할 때 사용됩니다. 예를 들어, 데이터베이스 연결 풀, 로그 관리 클래스 등이 이에 해당합니다.자바에서는 아래와 같은 코드로 싱글톤..

[Java] 싱글톤은 Enum 타입으로 만들어라

싱글톤 패턴: 구현, 문제점, 해결책1. 싱글톤 패턴이란?싱글톤 패턴은 클래스의 인스턴스가 단 하나만 생성되도록 보장하고, 어디에서든 이를 전역적으로 접근할 수 있게 하는 디자인 패턴입니다.주로 공유 리소스 관리, 설정 객체 등에 사용됩니다.전형적인 싱글톤 구현 방식public class User { private static final User INSTANCE = new User(); private User() {} public static User getInstance() { return INSTANCE; }}2. 기존 싱글톤 방식의 문제점직렬화(Serialization)와 역직렬화(Deserialization)Serializable 인터페이스를 구현할 경우, 역직렬..

[Java] 싱글톤(Singleton) 패턴의 사용 이유와 문제점

싱글톤 패턴이란?싱글톤 패턴(Singleton Pattern)은 소프트웨어 디자인 패턴 중 하나로, 클래스의 인스턴스를 단 하나만 생성하고, 해당 인스턴스에 전역적으로 접근할 수 있도록 보장하는 방법입니다.이 패턴은 공통된 자원을 관리하거나 전역 상태를 유지해야 할 때 자주 사용됩니다.주요 특징은 아래와 같습니다.인스턴스가 한 번만 생성됨.전역적으로 접근 가능.동일한 자원을 반복 생성하지 않아 효율적.싱글톤 패턴을 사용하는 이유자원의 효율적 관리인스턴스를 하나만 생성하고 이를 공유하기 때문에 메모리 낭비를 줄일 수 있습니다.데이터베이스 연결, 로그 관리 등에서 유용합니다.글로벌 접근성 제공애플리케이션 어디서나 동일한 객체에 접근 가능.중복 코드 작성 없이 공통 데이터와 로직을 공유.상태 관리의 일관성단일..

[JPA] 엔티티 매핑 (Entity Mapping)

엔티티 매핑 (Entity Mapping)엔티티 매핑(Entity Mapping)은 객체 지향 프로그래밍에서 엔티티 클래스와 데이터베이스 테이블 간의 매핑을 정의하는 핵심 개념입니다. JPA(Java Persistence API)와 같은 ORM(Object-Relational Mapping) 기술을 활용하여 데이터베이스와 객체 간의 데이터를 매핑하고 관리할 수 있습니다. 이번 글에서는 엔티티 매핑의 기본 개념, 주요 애노테이션, 실무 적용 사례, 그리고 엔티티 매핑 시 주의해야 할 점에 대해 다뤄보겠습니다.1. 엔티티 매핑의 기본 개념엔티티(Entity)는 데이터베이스의 테이블과 매핑되는 자바 클래스입니다. JPA를 통해 우리는 자바 객체를 데이터베이스 테이블에 쉽게 매핑하고, CRUD(Create, R..