2025/01 4

1. Strategy 패턴

Strategy 패턴이란?Strategy 패턴은 동일한 문제를 해결하는 여러 알고리즘이 있을 때, 이들을 독립된 클래스로 캡슐화하고 런타임에 알고리즘을 교체할 수 있도록 하는 설계 패턴입니다. 이 패턴은 코드 중복을 줄이고 확장성을 높이는 데 매우 유용합니다. 예를 들어, 결제 시스템을 설계한다고 가정해봅시다. 결제 방식은 신용카드, PayPal, 혹은 기타 방식으로 다양할 수 있습니다. 각 결제 방식을 동적으로 변경할 수 있다면 사용자의 요구에 더 잘 대응할 수 있습니다. 하지만 잘못된 설계로 인해 유지보수와 확장성이 떨어질 위험이 있습니다. 다음은 잘못된 설계와 그 문제점을 살펴보고, 이를 Strategy 패턴으로 해결하는 과정을 소개합니다. 이 글의 소스코드 및 설명은 헤드퍼스트 디자인패턴 책을 참..

Java 직렬화와 NotSerializableException 문제

1. 들어가며Java 개발을 하다 보면 직렬화(Serialization)는 네트워크 통신, 파일 저장, 캐시 관리와 같은 작업에서 중요한 역할을 합니다. 그러나 직렬화 과정에서 **NotSerializableException**과 같은 예외를 만날 수 있습니다. 특히, HttpSession 또는 세션에서 가져온 데이터를 사용하는 객체를 직렬화할 때 문제가 자주 발생합니다.이 글에서는 세션에서 데이터를 가져와 사용하는 객체에서 발생한 직렬화 이슈를 중심으로 원인과 해결 방법을 소개합니다. 2. 문제 상황아래는 세션에서 데이터를 가져와 사용하는 객체를 직렬화하려다 발생한 예외 상황입니다.Object obj = this.request.getSession().getAttribute("vis"); 위 코드에서 v..

Java로 TCP 프록시 서버 구현하기 - 라운드 로빈 로드밸런싱을 활용한 백엔드 서버 연결

소개멀티스레드 환경에서 다수의 TCP 요청을 처리하고, 이를 백엔드 서버로 효율적으로 분배하는 TCP 프록시 서버를 구축하는 방법을 소개합니다. 이 프로젝트는 Java의 강력한 네트워크 라이브러리와 라운드 로빈 로드밸런싱 알고리즘을 활용해 간단하고 효율적인 로드밸런싱을 구현합니다. 1. 프로젝트 개요목표TCP 요청을 처리하는 프록시 서버를 구축.백엔드 서버 그룹으로 요청을 분배.라운드 로빈 알고리즘을 통해 요청을 균등하게 분배.멀티스레드를 활용해 여러 클라이언트 요청을 동시에 처리.구성클라이언트: TCP 요청을 보냄.프록시 서버: TCP 요청을 수신하고 백엔드 서버로 전달.백엔드 서버 그룹: 요청을 처리하고 결과를 반환.2. 라운드 로빈 로드밸런싱로드밸런싱이란?로드밸런싱은 다수의 서버에 작업을 균등하게 ..

디자인 패턴

안녕하세요. 오랜만에 블로그 글을 씁니다. 이번에는 디자인 패턴에 대해 공부하고 기록해보려 합니다.디자인 패턴이란?디자인 패턴은 소프트웨어 설계에서 반복적으로 나타나는 문제를 해결하기 위한 검증된 설계 방법입니다. 이는 코드를 효율적이고 체계적으로 작성하도록 돕는 일종의 "모범 답안"이라고 할 수 있습니다.디자인 패턴이 왜 필요한가?문제 해결의 기준 제공: 반복되는 문제에 대해 검증된 해결책을 제공합니다.코드의 가독성과 재사용성 향상: 유지보수하기 쉽고 확장 가능한 코드를 작성할 수 있습니다.개발자 간 의사소통 강화: 공통된 용어와 설계를 통해 팀 간 협업이 원활해집니다.디자인 패턴은 어디에 활용되는가?디자인 패턴은 다음과 같은 상황에서 유용합니다:객체 생성이 복잡하거나 관리가 필요한 경우 (예: Sin..