전체 글 11

Java NIO란?

Java NIO(New Input/Output)는 Java 1.4에서 도입된 비동기 I/O API로, 기존의 전통적인 I/O 방식을 개선하여 더 효율적이고 확장 가능한 애플리케이션 개발을 가능하게 합니다.이 글에서는 NIO의 핵심 개념부터 실제 활용 방법까지 자세히 알아보겠습니다.기존 I/O vs NIO기존 I/O의 한계기존의 Java I/O는 블로킹(Blocking) 방식으로 동작합니다.// 기존 I/O - 블로킹 방식InputStream input = socket.getInputStream();int data = input.read(); // 데이터가 올 때까지 대기이런 방식의 문제점은 다음과 같습니다.스레드가 I/O 작업 중에 블로킹되어 다른 작업을 수행할 수 없음많은 클라이언트를 처리하려면 스레드..

카테고리 없음 2025.06.29

DNS란 무엇인가?

DNS(Domain Name System)는 인터넷 전화번호부입니다. 사용자는 nytimes.com 또는 espn.com과 같은 도메인 이름을 통해 온라인으로 정보에 액세스합니다.웹 브라우저는 인터넷 프로토콜(IP) 주소를 통해 상호작용합니다. DNS는 브라우저가 인터넷 자원을 로드할 수 있도록 도메인 이름을 IP 주소로 변환합니다.인터넷에 연결된 각 기기에는 다른 컴퓨터가 기기를 찾는 데 사용하는 고유한 IP 주소가 있습니다.DNS 서버를 사용하면 사람이 192.168.1.1(IPv4의 경우)과 같은 IP 주소 또는 2400:cb00:2048:1::c629:d7a2(IPv6의 경우)처럼 영문과 숫자로 된 복잡한 IP 주소를 기억할 필요가 없습니다.DNS는 어떻게 작동하나요?DNS 확인 프로세스에는 호스..

웹 페이지, 웹사이트, 웹 서버, 검색 엔진의 차이점

웹 페이지, 웹사이트, 웹 서버, 검색 엔진 등 다양한 웹 관련 개념에 대해 설명하는 것부터 시작하겠습니다. 이러한 용어는 웹 초보자가 혼동하거나 잘못 사용하는 경우가 많습니다. 각각의 의미를 알고 있는지 확인해 보겠습니다! 몇 가지 정의부터 시작하겠습니다.웹 페이지웹 브라우저에 표시할 수 있는 문서입니다. 이러한 문서는 종종 "페이지"라고도 불립니다. 이러한 문서는 HTML 언어로 작성되며 나중에 자세히 살펴보겠습니다.웹사이트웹 페이지 모음은 하나의 리소스로 그룹화되어 있으며, 이들을 연결하는 링크가 있습니다. 흔히 "사이트"라고 불립니다.웹 서버인터넷에서 웹사이트를 호스팅하는 컴퓨터입니다.웹 서비스기능을 수행하거나 데이터를 제공하라는 인터넷 요청에 응답하는 소프트웨어입니다. 웹 서비스는 일반적으로 웹..

도메인 이름(Domain Name)이란?

요약도메인 이름은 인터넷 인프라의 핵심 요소입니다. 인터넷에서 사용 가능한 모든 웹 서버에 사람이 읽을 수 있는 주소를 제공합니다.인터넷에 연결된 모든 컴퓨터는 공용 IP 주소 (IPv4 주소(예: 192.0.2.172) 또는 IPv6 주소(예: 2001:db8:8b73:0000:0000:8a2e:0370:1337))를 통해 접속할 수 있습니다.컴퓨터는 이러한 주소를 쉽게 처리할 수 있지만, 사람들은 서버를 운영하는 사람이 누구인지, 웹사이트가 어떤 서비스를 제공하는지 알아내는 데 어려움을 겪습니다. IP 주소는 기억하기 어렵고 시간이 지남에 따라 변경될 수 있습니다.이러한 모든 문제를 해결하기 위해 우리는 도메인 이름이라는 사람이 읽을 수 있는 주소를 사용합니다.더 깊이 파고들기도메인 이름의 구조도메인..

URL이란?

URL이란?요약하이퍼텍스트와 HTTP에서 URL은 웹의 핵심 개념 중 하나입니다. URL은 웹에 게시된 리소스를 검색하기 위해 브라우저에서 사용하는 메커니즘입니다.URL은 Uniform Resource Locator의 약자입니다. URL은 웹에서 주어진 고유 리소스 주소에 지나지 않습니다. 이론적으로 각각의 유효한 URL은 고유한 리소스를 가리킵니다.이러한 리소스는 HTML 페이지, CSS 문서, 이미지 등이 될 수 있습니다. 실제로는 몇 가지 예외가 있으며 가장 일반적인 예외는 더 이상 존재하지 않거나 이동된 리소스를 가리키는 URL입니다.URL로 표시되는 리소스와 URL 자체는 웹 서버에서 처리되므로 해당 리소스와 관련 URL을 신중하게 관리하는 것은 웹 서버 소유자에게 달려 있습니다.기본: URL ..

HTTP의 발전

HTTP(HyperText Transfer Protocol)는 월드 와이드 웹의 기본 프로토콜입니다. Tim Berners-Lee와 그의 팀이 1989-1991년 사이에 개발한 HTTP는 유연성을 형성하는 동시에 단순성을 유지하는 데 도움이 되는 많은 변화를 거쳤습니다. 아래 내용들을 통해 HTTP가 반신뢰 실험실 환경에서 파일을 교환하도록 설계된 프로토콜에서 고해상도 및 3D로 이미지와 비디오를 전달하는 현대식 인터넷 미로로 어떻게 진화했는지 알아보세요.월드 와이드 웹의 발명1989년, CERN에서 일하는 동안 Tim Berners-Lee는 인터넷에 하이퍼텍스트 시스템을 구축하는 제안을 작성했습니다. 처음에는 Mesh라고 불렸지만, 1990년에 구현하면서 나중에 World Wide Web 으로 이름이 ..

HTTP란 무엇인가?

개요HTTP는 HTML 문서와 같은 리소스를 가져오기 위한 프로토콜입니다.HTTP는 웹에서 모든 데이터 교환의 기초가 되며 클라이언트-서버 프로토콜입니다.이는 요청이 수신자, 일반적으로 웹 브라우저에 의해 시작된다는 것을 의미합니다.전체 문서는 일반적으로 텍스트 콘텐츠, 레이아웃 지침, 이미지, 비디오, 스크립트 등과 같은 리소스로 구성됩니다.클라이언트와 서버는 데이터 스트림이 아닌 개별 메시지를 교환하여 통신합니다.클라이언트가 보낸 메시지를 요청이라고 하고 서버가 응답으로 보낸 메시지를 응답이라고 합니다.HTTP는 애플리케이션 계층 프로토콜로서 TCP(전송 계층)와 IP(네트워크 계층) 위에, 그리고 프레젠테이션 계층 아래에 있습니다.1990년대 초에 설계된 HTTP는 시간이 지남에 따라 발전해 온 확..

인터넷은 어떻게 동작하나요?

개요현대 사회에서 인터넷은 빼놓을 수 없는 중요한 요소입니다. 스마트폰을 사용하거나 컴퓨터, 노트북을 사용할 때 인터넷이 없다면 굉장한 불편함을 느낄 것입니다. 누군가 '인터넷이 무엇이냐?' 라고 묻는다면 명확한 의미를 내리기가 조금 애매합니다. 개발자로서 인터넷이 어떤 의미인지, 어떻게 동작하는지 정리해보고자 합니다.인터넷이란?인터넷이 무엇인지 알아보기 전에 네트워크가 무엇인지 알아야 합니다. 네트워크는 서로 연결된 컴퓨터나 다른 기기의 그룹입니다. 예를 들어, 집에 있는 당신은 컴퓨터와 기기의 네트워크를 가지고 있을 수 있습니다. 옆집에 사는 친구는 비슷한 기기의 네트워크를 가지고 있을 수 있습니다. 이웃도 비슷한 기기의 네트워크를 가지고 있을 수 있습니다. 이 모든 네트워크가 서로 연결되면 인터넷을..

Spring Boot 3.x.x 버전에서 Integration Test

Reactive MongoDB Integration Test 최근 개인 프로젝트 하나를 진행하고 있는데, Webflux + Reactive MongoDB 조합으로 Integration 테스트 코드 작성한 방법을 공유하려고 한다. 구글링하면 DataMongoTest 어노테이션과 embedded MongoDB 라이브러리를 통해서 테스트하는 예시는 많지만, 내 프로젝트에서는 정상 동작하지 않았다. 내 프로젝트에서 사용하는 기술 스택과 라이브러리 버전부터 정리해보자. 기술 스택, 라이브러리 버전 Spring Boot 3.1.0 spring-boot-starter-webflux reactor-test 3.5.4 spring-boot-starter-data-mongodb-reactive de.flapdoodle.e..

개발 2023.08.21

Kafka? RabbitMQ의 차이

Kafka? RabbitMQ? 최근 회사 업무를 진행하면서 Kafka 서비스를 이용하여 메세지를 주고 받도록 설계하였다. 설계에 대해서 간단히 설명하니 팀원이 질문하길 메세지 큐를 이용한 기술은 RabbitMQ도 있는데, 왜 Kafka를 이용하셨나요?라고 물었다. 질문을 듣고 명확히 Kafka를 사용한 이유를 설명할 수가 없었다. 기술을 사용하더라도 왜 사용했는지에 대해 제대로 알아야한다고 생각해서 이번 기회에 Kafka, RabbitMQ의 간단한 설명과 차이를 정리해보고자 한다. 1. 메세지 큐 메시지 큐(Message Queue)는 프로세스 또는 프로그램 간에 데이터를 교환할 때 사용하는 통신 방법 중에 하나로, 메시지 지향 미들웨어(Message Oriented Middleware:MOM)를 구현한..

개발/Data 2023.05.08