반응형
이전 글에서는 책임 연쇄(Chain of Responsibility) 패턴을 모던 C++ 관점에서 재해석하며, 상속 없이 람다와 함수 합성, std::expected, coroutine, Ranges, std::format 등을 활용해 요청 처리 파이프라인을 단순하고 유연하게 구현할 수 있음을 확인했습니다. 이제는 행동(Behavioral) 패턴 중 상태(State) 패턴을 다룹니다.상태 패턴은 객체가 내부 상태에 따라 서로 다른 행동을 수행하도록 하는 패턴입니다. 전통적으로는 State 인터페이스, ConcreteState 클래스를 상속해 상태별로 다른 메서드를 오버라이드하고, 상태 전이 시 상태 객체 교체 방식으로 구현했습니다. 이는 새로운 상태 추가 시 클래스 증가, 상태 전이 로직 분산, 유지보수..
이전 글까지 우리는 대부분의 GoF 패턴을 모던 C++ 관점에서 재해석해왔습니다. 이번에는 행동(Behavioral) 패턴 중 아직 다루지 않은 책임 연쇄(Chain of Responsibility) 패턴에 주목합니다.책임 연쇄 패턴은 한 요청이 처리될 수 있는 핸들러를 체인 형태로 연결하고, 요청이 들어오면 체인을 따라가며 처리 가능 한 핸들러를 찾는 구조를 만듭니다. 전통적으로는 핸들러 인터페이스와, setNextHandler() 메서드를 통해 다음 핸들러를 연결하는 구조를 취했지만, 이는 상속 기반 설계로 인한 클래스 증가와 유지보수 어려움을 야기합니다.C++20 이상에서는 Concepts로 요청/응답 인터페이스를 제약하고, 람다와 함수 합성으로 핸들러를 정의해 상속 없이 체인을 구성할 수 있습니다..
이전 글에서는 플라이웨이트(Flyweight) 패턴을 모던 C++ 관점에서 재해석하며, 상속 없이 값 기반 공유 로직을 단순히 구현하고, 조건부 처리, 비동기 로딩, 로깅, 에러 처리 등 다양한 요구에도 쉽게 대응할 수 있음을 확인했습니다. 이번에는 구조적 패턴 중 프록시(Proxy) 패턴을 다룹니다.프록시 패턴은 객체 접근을 제어하거나, 지연 로딩(Lazy Loading), 원격 호출(Remote Proxy), 캐싱(Caching), 권한 체크 등의 기능을 대리 객체를 통해 투명하게 추가하는 패턴입니다. 전통적으로는 상속 기반 인터페이스와 Proxy 클래스를 정의해 접근 로직을 구현했으나, 이는 클래스 증가, 유지보수 어려움, 에러 처리나 비동기 처리 시 복잡성을 초래합니다.C++20 이상에서는 Con..
이번에 소개할 표현은 "Brownfield vs Greenfield"라는 대비 개념입니다. 소프트웨어 개발에서 "Greenfield Project"는 아무런 제약 없이 백지 상태에서 시작하는 프로젝트를 의미하고, 반대로 "Brownfield Project"는 이미 구축된 레거시 코드나 인프라를 개선하거나 확장하는 상황을 가리킵니다.1. 의미"Greenfield"는 새로운 땅에 건물을 올리듯, 아무것도 없는 상태에서 시작하므로 최신 기술과 아키텍처를 자유롭게 적용할 수 있습니다. 이로 인해 기술 부채 없이 깨끗한 코드를 작성하고, 최적의 디자인 패턴을 채택하기가 상대적으로 쉽습니다. 반면, "Brownfield"는 이미 존재하는 시스템을 다듬고 현대화하는 과정으로, 레거시 코드 이해, 기술 부채 해결, 기..
이번에 소개할 표현은 "Release Candidate (RC)"입니다. "Release Candidate"는 새로운 소프트웨어 버전이 공식 릴리즈 직전에 있는 상태로, 최종 검증을 위해 내놓은 거의 최종 형태의 빌드를 의미합니다. 즉, 이 빌드가 큰 문제 없이 검증을 통과한다면 그대로 정식 릴리즈 버전으로 이어지며, 만약 문제가 발견된다면 수정 후 다시 RC를 내거나 일정을 조정하게 됩니다.1. 의미"Release Candidate"는 개발팀이 '이제 거의 다 됐다'고 판단했지만, 그래도 마지막으로 사소한 버그나 마감 전 확인이 필요한 상태를 가리킵니다. RC 버전은 종종 테스트 그룹이나 제한된 사용자에게 배포되어 실제 서비스 환경과 유사한 조건에서 시험을 받거나, 사내 QA 팀의 철저한 검증을 거쳐,..
이번에 소개할 표현은 "Epic"입니다. "Epic"는 소프트웨어 개발에서 하나의 큰 비즈니스 목표나 기능을 포괄하는 광범위하고 장기적인 요구사항을 의미합니다. 즉, 단일 스프린트나 짧은 주기 안에 모두 구현하기 어려울 만큼 크고 복잡한 기능 덩어리로 볼 수 있습니다. 에픽(Epic)은 나중에 더 작은 단위의 User Story나 작업(Task)으로 분할되어, 점진적이고 애자일하게 개발될 수 있습니다.1. 의미"Epic"는 단기간에 완성하기 어려운 대형 요구사항 뭉치를 가리키며, 이를 관리하기 위해서는 세분화와 우선순위 재조정이 필요합니다. 에픽은 제품 로드맵에 반영되는 전략적 목표나 큰 기능 영역에 해당하며, 여러 User Story를 모두 완료해야 에픽 하나를 완성할 수 있습니다.예:"이번 분기 목표..
이번에 소개할 표현은 "Scope Creep"입니다. "Scope Creep"는 프로젝트 진행 중 요구사항이나 기능 범위가 통제 없이 계속 확대되어, 초기 계획보다 훨씬 커지고 복잡해지는 현상을 의미합니다. 즉, 처음에는 명확하고 제한된 목표로 시작했으나, 진행 도중 이해관계자의 추가 요청, 불명확한 요구사항 관리 등으로 인해 범위가 점점 커져서 일정 지연, 품질 저하, 비용 증가 등의 문제를 초래하게 됩니다.1. 의미"Scope Creep"는 '프로젝트 범위(Scope)'가 시간이 지날수록 서서히(creep) 늘어나는 상황을 가리킵니다. 이는 명확한 요구사항 관리와 우선순위 설정이 부족할 때 자주 발생하며, 개발팀은 예측 불가능한 추가 작업으로 인해 생산성이 떨어지고, 프로젝트 전체 일정 관리가 어려워..
리빙 트러스트(Living Trust)는 개인이 생전에 설립하는 법적 장치로, 자산을 보호하고 사후에 원하는 방식으로 분배할 수 있게 해주는 유용한 유산 상속 도구입니다. 한국어로는 '생전 신탁'이라고도 불리는 이 제도는 복잡한 상속 절차를 간소화하고 자산을 효율적으로 관리할 수 있게 해줍니다. 이 글에서는 리빙 트러스트의 개념, 장단점, 설립 과정, 그리고 활용 방안에 대해 자세히 알아보겠습니다.리빙 트러스트의 정의와 구성 요소리빙 트러스트는 개인(신탁인)이 자신의 재산을 신탁자에게 이전하여 관리하도록 하고, 그 수익을 수혜자에게 분배하도록 하는 법적 약정입니다. 이 트러스트는 신탁인의 생존 기간 동안 효력을 유지하며, 사망 시에도 계속해서 작동합니다.리빙 트러스트의 주요 구성 요소는 다음과 같습니다:..
영어 실력을 향상시키고 싶으신가요? 2024-2025년 기준으로 한국에서 가장 인기 있는 영어 온라인 튜터 서비스들을 소개해 드리겠습니다.1. 링글(Ringle)링글은 아이비리그 및 명문대 출신 원어민 튜터와 1:1 맞춤형 영어 화상 수업을 제공하는 온라인 영어 학습 플랫폼으로, 한국 학습자들 사이에서 높은 인기를 얻고 있습니다.주요 특징:1000명 이상의 아이비리그 및 명문대 출신 원어민 튜터맞춤형 1:1 수업실시간 교정 시스템AI 기반 분석을 통한 상세한 피드백다양한 주제의 최신 교재 제공가격: 20분 수업 기준 시간당 약 15,000원~25,000원링글의 장점은 고품질 튜터와 실시간 교정 시스템입니다. 특히 비즈니스 영어, 유학 준비, 영어 인터뷰 대비 등 특정 목적을 위한 영어 학습에 강점을 보입..
안녕! 혹시 미국에 오려는 학생, 연구원, 강사, 의사 등 해외 인재가 미국에 오면 많이 받는 비자가 바로 J-1 비자라는 거 들어봤어? 예전에는 이 비자를 통해 미국에서 어느 정도 활동한 뒤, 프로그램 끝나면 모국으로 최소 2년은 돌아가 있어야 하는 규정(2년 본국 거주 의무)이 상당히 귀찮고 복잡했지. 그런데 이게 드디어 바뀐다!2024년 말, 미국 국무부에서 J-1 교환 방문자 기술 목록(Exchange Visitor Skills List)을 싹 바꾸기로 하면서, 2025년부터는 많은 나라 출신들이 이 2년 거주 요건 부담 없이 미국 생활을 이어나갈 수 있게 된다는 희소식이야.무슨 변화가 있는 거야?2024년 12월 9일 발표 이후로, J-1 기술 목록에서 34개국이 제외되었어. 이게 무슨 의미냐면..