헥사고날 아키텍처(Hexagonal Architecture), 포트와 어댑터
·
🍞 BackEnd
디자인 패턴 시리즈를 이어오면서 Strategy 패턴과 Adapter 패턴을 정리했는데, 이 둘을 아키텍처 레벨로 확장하면 어떤 모습이 될까 궁금해서 이번엔 헥사고날 아키텍처(Hexagonal Architecture) 를 정리해보려고 한다.헥사고날 아키텍처는 Alistair Cockburn이 2005년에 제안한 아키텍처 패턴으로, 포트와 어댑터(Ports and Adapters) 아키텍처라고도 불린다. 핵심 목표는 하나다.비즈니스 로직을 외부 기술(DB, 웹 프레임워크, 메시지 큐, 외부 API 등)로부터 완전히 격리시킨다.특정 웹 프레임워크나 DB에 종속된 개념이 아니라 언어와 프레임워크를 가리지 않고 적용할 수 있는 아키텍처 원칙이라, 이번 글에서는 프레임워크 이야기는 최소화하고 개념과 구조 자체에 ..
전략 패턴(Strategy Pattern), 알고리즘을 객체로 캡슐화하기
·
🍞 BackEnd
1. 들어가며기능을 하나씩 추가하다 보면 어느 순간 if-elif-else 블록이 감당하기 힘든 크기로 불어나 있는 걸 발견할 때가 있다. 특히 "조건에 따라 다른 방식으로 동작해야 하는" 로직—할인 정책, 정렬 방식, 결제 수단 처리 같은—을 다룰 때 이런 현상이 자주 나타난다.이번에 학습하면서 이 문제를 정면으로 다루는 디자인 패턴이 바로 전략 패턴(Strategy Pattern) 이라는 걸 알게 되어 정리해본다.2. 전략 패턴이란전략 패턴은 알고리즘군을 각각 하나의 객체로 캡슐화하고, 이들을 서로 교환 가능하게 만드는 행위 패턴(Behavioral Pattern)이다. GoF의 정의를 풀어보면 다음과 같다.동일한 목적을 가진 여러 알고리즘을 각각 별도의 클래스로 캡슐화하고, 이를 클라이언트가 런타임..
파이썬은 왜 멀티스레드를 잘 안 쓸까? GIL부터 FastAPI 비동기 처리까지
·
🍞 BackEnd/FastAPI
시작하게 된 계기백엔드 개발을 하다 보면 "성능을 높이려면 병렬로 처리하면 되지 않을까?"라는 생각을 자연스럽게 하게 된다. 다른 언어라면 스레드를 여러 개 띄우는 게 첫 번째 선택지겠지만, 파이썬에서는 이야기가 조금 다르다. GIL(Global Interpreter Lock) 때문이다.이번 글에서는 GIL이 정확히 무엇이고 왜 멀티스레딩의 발목을 잡는지, 그리고 실무에서는 이를 어떻게 우회해서 병렬/동시 처리를 하는지 — 특히 FastAPI가 이 문제를 어떻게 다루는지까지 정리해본다.GIL이란 무엇인가GIL은 CPython(우리가 흔히 쓰는 파이썬 인터프리터)이 한 번에 하나의 스레드만 파이썬 바이트코드를 실행하도록 강제하는 락(lock)이다. 즉, 프로세스 안에 스레드를 아무리 여러 개 만들어도 실제..
Statsig과 Feature Flag에 대해서
·
🍞 개발 협업 & 생산성
근무하면서 처음 Statsig라는 도구를 접하게 되었습니다. 회의 중 시니어 개발자분들께서 feature flag, 환경별 데이터 서빙, 커뮤니케이션 비용 같은 주제에 대해 이야기하셨는데, 모든 내용을 충분히 이해하지는 못했습니다. 이후 회의가 끝난 뒤 관련 내용을 따로 찾아보며 스스로 정리해보았습니다. 아직 직접 설계하거나 구축해본 경험은 없지만, 공부하면서 이해한 내용을 바탕으로 풀어쓴 글입니다. 목차Statsig이란?Feature Flag 기본 개념환경별 데이터 서빙 구조staging이 이름만 staging인 경우왜 커뮤니케이션 비용이 늘어나는가1. Statsig이란?회의에서 Statsig이라는 이름이 처음 등장했을 때는 feature flag 툴 정도로만 이해했습니다. 나중에 찾아보니 featur..
Epic, Story, Task 헷갈리는 JIRA 용어를 정리해보자
·
🍞 개발 협업 & 생산성
회사에서 협업 도구로 Jira를 사용하고 있다. 팀에 합류한 뒤 자연스럽게 Jira를 쓰기 시작했지만 사용할수록 익숙하게 쓰는 것과 제대로 이해하고 쓰는 것은 다르다는 생각이 들었다. Epic, Story, Task의 차이, 스프린트 운영 방식 같은 개념들을 얼핏 알고는 있었지만 막상 설명하려고 하면 흐릿한 부분이 많았다. 이번 글에서는 Atlassian 공식 문서를 바탕으로 Jira의 핵심 개념을 다시 정리하고, 실무에서 헷갈리기 쉬운 포인트들을 함께 정리해보려고 한다.1. Jira란Atlassian이 만든 프로젝트 관리 도구다. 원래 버그 트래킹 용도로 시작했지만 지금은 팀 업무 전반을 관리하는 플랫폼으로 쓰인다.공식 문서 기준으로 역할은 네 가지다.Planning이슈를 생성하고 스프린트를 계획한다T..
Claude Code를 어떻게 토큰 낭비없이 쓸 수 있을까?
·
🍞 AI
들어가며회사에서 Claude Code를 도입하고 나서 처음엔 생산성이 확 올라갔다.근데 쓰면 쓸수록 두 가지가 계속 신경 쓰였다. 하나는 세션이 길어질수록 답변 품질이 떨어진다는 것, 또 하나는 API 비용이 생각보다 많이 나온다는 것이었다. 아침에 물어볼 때랑 오후에 물어볼 때 결과물이 달랐고, 분명히 잘 됐던 패턴인데 나중엔 맥락을 못 잡는 경우도 생겼다.처음엔 그냥 모델이 원래 이런가 싶었다. 근데 찾아보니 원인은 컨텍스트를 제대로 관리하지 않고 있었던 것이다. Claude Code가 어떻게 동작하는지 제대로 이해하지 못한 채 그냥 채팅하듯 쓰고 있었다. 공식 문서랑 기술 블로그들을 찾아보면서 그 내용들을 이 글에 정리해뒀다. Claude Code를 이미 쓰고 있는데 뭔가 비효율적인 것 같다는 느낌..
AWS Certified Solutions Architect - Associate(SAA-C03) 합격 후기
·
🍞 Cloud·Infra/AWS SAA
AWS Certified Solutions Architect - Associate(SAA-C03) 합격 후기를 찾고 있다면 이 글이 도움될 것이다. 나는 취업 준비 기간 동안 SAA-C03을 744점으로 취득하며 공부 방법, 덤프 활용법, 시험 후기, 앞으로의 계획까지 정리했다.AWS SAA-C03이란?AWS Certified Solutions Architect - Associate는 Amazon Web Services(AWS)에서 공식적으로 제공하는 클라우드 자격증이다. 현재 시험 버전은 SAA-C03이며, 클라우드 아키텍처 설계 능력을 검증하는 Associate 레벨 자격증 중에서 가장 널리 알려진 자격증이다.IT 업계에서 AWS 자격증 중 가장 취업 연계성이 높은 자격증으로 꼽히며, 개발자, 인프라..
BFF(BackEnd For FrontEnd)를 적용하는 이유에 대해서
·
🍞 BackEnd
요즘 서비스는 대부분 MSA(Micro Service Architecture) 기반으로 개발한다.서비스마다 API가 독립적으로 존재하다 보니, 프론트엔드는 여러 API를 호출해 원하는 데이터를 조합해야 한다. 이 과정에서 문제가 발생하는데 예를 들어,Web, Android, iOS 등 플랫폼별로 서로 다른 데이터 요구사항이 발생한다.원하는 데이터 형태를 얻기 위해 여러 API 응답을 조작하고 합치고 가공해야 하는 일이 생긴다.결과적으로 프론트엔드 단에서 비즈니스 로직이 과도하게 쌓이고, 렌더링 성능까지 저하되는 문제가 나타난다.이때 프론트엔드는 UI 스레드가 렌더링과 로직 수행을 같이 담당하게 되면, 화면 반응 속도는 느려지고 코드베이스는 복잡해져 유지보수조차 힘들어진다. 이 문제를 해결하기 위해 BFF..
[네트워크] TCP/IP 4계층 모델에 대해서
·
🍞 Computer Science/네트워크
TCP/IP 계층은 네 개의 계층을 가지고 있으며, OSI 7계층과 많이 비교한다. 1. TCP/IP 4계층 구조앞의 그림처럼 TCP/IP 계층과 달리 OSI 계층은 애플리케이션 계층을 세 개로 쪼개고 링크 계층을 데이터 링크 계층, 물리 계층으로 나눠서 표현하는 것이 다르고, 인터넷계층을 네트워크 계층으로 부른다는 점이 다르다.이 계층들은 특정 계층이 변경되었을 때 다른 계층이 영향을 받지 않도록 설계되었다. 예를 들어 전송 계층에서 TCP를 UDP로 변경했다고 해서 인터넷 웹 브라우저를 다시 설치해야 하는 것은 아니듯 유연하게 설계된 것이다. 애플리케이션 계층애플리케이션 계층은 FTP, HTTP, SSH, SMTP, DNS 등 응용 프로그램이 사용되는 프로토콜 계층이며 웹 서비스, 이메일 등 서비스를..
[CS] 프로그래밍 패러다임에 대해서
·
🍞 Computer Science
프로그래밍 패러다임은 프로그래머에게 프로그래밍의 관점을 갖게 해주는 역할을 하는 개발 방법론이다. 예를 들어 객체 지향 프로그래밍은 프로그래머들이 프로그램을 상호 작용하는 객체들의 집합으로 볼 수 있게 하는 반면에, 함수형 프로그래밍은 상태 값을 지니지 않는 함수 값들의 연속으로 생각할 수 있게 해준다.프로그래밍 패러다임은 크게 선언형, 명령형으로 나누며, 선언형은 함수형이라는 하위 집합을 갖는다. 또한, 명령형은 다시 객체지향, 절차지향으로 나뉜다. 1. 선언형과 함수형 프로그래밍선언형 프로그래밍이란 무엇을 풀어내는가에 집중하는 패러다임이며, 프로그램은 함수로 이루어진 것이다라는 명제가 담겨있는 패러다임이기도 하다. 함수형 프로그래밍은 선언형 패러다임의 일종이다. 함수형 프로그래밍은 작은 순수함수들을 ..