개발을 하다 보면 네트워크 통신 방식을 접하게 된다. 데이터를 주고받는 방식에는 여러 가지가 있는데, 가장 대표적인 세 가지 방식인 유니캐스트, 멀티캐스트, 브로드캐스트에 대해 알아보고자 한다. 각 방식이 어떻게 다르며, 어떤 상황에서 사용되는지 예시를 통해 쉽게 이해
토폴로지는 네트워크의 성능과 안정성을 결정하는 핵심 요소이며, 특히 병목 현상(Bottleneck)을 이해하고 해결하는 중요한 척도가 된다병목 현상이란 말 그대로 병의 목처럼 좁아지는 구간 때문에 전체 흐름이 느려지는 것을 의미한다. 네트워크에서는 과도한 트래픽으로 인
링 토폴로지: 노드들이 고리 형태로 연결 된 네트워크 구조 토큰링 기반 프로토콜 전송 네트워크 상 단 하나 토큰 토큰 소유 노드만 네트워크 통신 가능 링 토폴로지는 어떤 노드에서 장애 발생했는지 쉽게 확인 가능 노드 추가 및 삭제 이론적으로는 쉽다 근데 실제로는
네트워크 토폴로지(Network Topology)는 노드와 링크가 어떤 구조로 연결되어 있는지를 나타내는 방식이다. 이번에는 대표적인 토폴로지인 버스, 스타, 트리 토폴로지에 대해 알아본다.버스 토폴로지는 중앙 회선 하나(백본, Backbone)에 여러 개의 노드가 연
오늘은 네트워크의 가장 기본적인 개념인 노드, 링크, 트래픽, 처리량, 대역폭, RTT에 대해 학습한 내용을 정리해본다.네트워크란 간단히 말해 노드(Node)와 링크(Link)가 서로 연결되어 리소스를 공유하는 집합을 의미한다.노드: 네트워크를 구성하는 각 지점을 말한
개발을 하다 보면, “무언가를 쉽게 교체하고 싶다”라는 욕구가 자주 생긴다. 이럴 때 많이 언급되는 개념이 바로 전략 패턴과 의존성 주입(DI) 이다.둘 다 쉽게 교체가 가능하다는 점에서 비슷하게 느껴질 수 있다. 하지만 본질적으로 목적과 사용 방식, 그리고 적용되는
Spring Boot 애플리케이션을 개발하다 보면, HTTP 요청과 응답을 중간에 가로채어 처리해야 하는 경우가 자주 발생한다. 이때 사용하는 대표적인 방법이 바로 Filter와 Interceptor이다. 두 기능 모두 비슷한 역할을 하지만, 동작하는 시점과 활용 목적
개발 공부를 하다 보면 자주 마주치는 단어 중 하나가 \*\*"컨텍스트(context)"\*\*입니다. 어렵게 느껴지지만, 우리 일상 속에서 이미 자주 경험하고 있는 개념입니다.여러분이 카페에 들어가서 "아이스 아메리카노 하나 주세요"라고 말한다고 해보겠습니다. 이때
웹 애플리케이션이 복잡해지면 상태(state) 관리가 점점 어려워진다. 특히 MVC 패턴에서는 Model과 View 사이의 관계가 많아질수록 데이터 흐름이 꼬이고, 상태 추적이 어려워지는 문제에 직면하게 된다.이러한 문제를 해결하기 위해 Facebook에서 제안한 아키
스프링 프레임워크는 다양한 모듈로 구성된 아키텍처를 기반으로 동작한다. 그중 웹 애플리케이션을 구축할 때 핵심 역할을 담당하는 것이 spring-web 모듈이며, 이 모듈에서 가장 중심이 되는 컴포넌트는 바로 DispatcherServlet이다.이번 글에서는 Sprin
세 가지 타입은 아래와 같이 포괄 관계를 가진다:ReactNode: 가장 포괄적인 타입. 문자열, 숫자, boolean, null, undefined, ReactElement, ReactFragment, ReactPortal 등 모두 포함된다.ReactElement:
MVC 패턴은 애플리케이션을 모델(Model), 뷰(View), 컨트롤러(Controller)의 세 가지 역할로 나누어 구성하는 디자인 패턴입니다.모델은 애플리케이션의 핵심 데이터와 그 데이터를 처리하는 로직을 담당합니다. 데이터베이스, 상수, 변수 등이 이에 해당하며
프록시(Proxy) 패턴은 어떤 객체에 접근하기 전 그 흐름을 가로채어 접근을 제어하거나, 필터링하거나, 수정하는 역할을 하는 디자인 패턴입니다.쉽게 말하면, 인터페이스와 실제 객체 사이에 중간 계층을 둠으로써, 직접 접근을 막고 필요한 작업을 대신 수행하도록 하는 방
옵저버 패턴은 객체의 상태 변화를 관찰(Observe) 하고 있다가, 변화가 생기면 관찰자(Observer)들에게 자동으로 알림을 전파하는 디자인 패턴이다.즉, 주체(Subject)가 있고, 이를 구독한 옵저버(Observer) 들이 있으며, 주체의 상태가 바뀌면 옵저
React + Ktor + Koin + Exposed 조합으로 커뮤니티 사이트를 개발하고 있었다.의존성 주입은 Koin을 통해 관리하고, 라우팅은 기능별로 Route 모듈로 분리하고 있었다.이렇게 Route 내부에서 Koin의 inject()를 사용하려고 했는데, 다음
전략 패턴(Strategy Pattern)은 "전략"이라고 부르는 알고리즘을 캡슐화하여,컨텍스트(Context) 안에서 서로 교체할 수 있게 만드는 디자인 패턴입니다.즉, 하나의 기능(예: 로그인, 결제 등)을 다양한 방법으로 구현할 수 있고,이 방법들을 쉽게 갈아끼울
메인 모듈이 직접 하위 모듈에 대한 의존성 주기 보다 중간에 의존성 주입자가 가로채 메인 모듈이 간접적으로 의존성 주입하는 방식 의존한다 라는 의미 A가 B에 의존한다 > B가 변하면 A가 변한다. 클래스 B가 수정이 되면 A도 수정해야 한다 DI 원칙 적용 전
이터레이터 패턴은 컬렉션(자료구조)의 내부 구조를 노출하지 않고도 그 안의 요소들을 순차적으로 접근할 수 있도록 해주는 디자인 패턴입니다.JavaScript에서는 이터레이터(Iterator)를 통해 다양한 자료구조를 동일한 방식으로 순회할 수 있는 인터페이스를 제공합니
팩토리 패턴은 객체 생성 로직을 클라이언트 코드에서 분리하여, 객체 생성과 관련된 책임을 별도의 클래스나 메서드로 위임하는 디자인 패턴입니다. 이 패턴을 사용하면 코드의 유지보수성과 확장성이 높아지며, 객체 생성 방식이 변경되더라도 기존 코드를 최소한으로 수정하면서 유
React의 <Suspense> 컴포넌트는 자식 컴포넌트를 렌더링하기 전에 필요한 데이터를 로드하는 동안 대체 UI(Fallback) 를 보여주는 역할을 합니다.즉, 비동기적으로 데이터를 가져오거나 코드 스플리팅을 통해 컴포넌트를 동적으로 로드할 때, 사용자에게