전송 계층전송 계층은 컴퓨터 네트워크의 OSI 모델과 TCP/IP 모델에서 중요한 역할을 하는 계층임.응용 프로그램 간의 통신을 책임지는 계층임.이 계층의 주요 기능은 데이터 전송의 신뢰성, 효율성, 그리고 정확성을 보장하는 것임. 핵심 기능1. 연결의 설정과 해제TCP를 예로 들면, 연결 지향적인 성격을 가지며, 데이터를 전송하기 전에 먼저 연결을 설정하고, 통신이 끝난 후에는 연결을 정리함. 2. 신뢰성 있는 통신데이터가 손상되지 않고, 정확한 순서로, 중복 없이 전동되도록 함.이는 TCP에서의 에러 검출, 순서 번호 부여, 재전송 제어 등으로 이루어짐. 3. 흐름 제어송신자와 수신자 간의 데이터 처리 속도 차이를 조절함.TCP에서는 수신자 버퍼의 여유 공간을 기반으로 송신 속도를 조절하는 슬라이딩 ..
TCP 통신TCP 통신은 네트워크에서 데이터를 신뢰성 있게 전달하기 위해 사용하는 프로토콜임.TCP는 OSI 7계층 중 전송 계층에 속하며, 주로 인터넷을 통해 데이터를 전송할 때 많이 사용됨. TCP 통신의 주요 특징과 과정1. 신뢰성 있는 데이터 전송TCP는 데이터의 정확한 전달을 보장하기 위해, 데이터가 손실되거나 순서가 뒤바뀌는 것을 방지함.이를 위해 TCP는 3-way 핸드셰이크 및 4-way 핸드셰이크를 통해 연결을 설정하고 해제함. 2. 3-way 핸드셰이크TCP 통신을 시작하기 위해서는 클라이언트와 서버가 서로 연결을 설정해야 함.이 과정은 다음과 같은 3단계를 거침 2-1. SYN클라이언트가 서버에 연결 요청을 보냄.2-2. SYN-ACK서버는 클라이언트의 요청을 받아들이며, 응답으로 연..
웹소켓웹소켓은 클라이언트와 서버 간에 양방향 통신을 실현하는 프로토콜임.일반적인 HTTP 통신과는 달리, 웹소켓은 지속적으로 연결을 유지하며 데이터를 실시간으로 주고받을 수 있음.웹소켓을 사용하면 브라우저나 애플리케이션이 서버와 지속적으로 연결을 유지해 서버가 새로운 정보를 클라이언트에 즉시 푸시할 수 있는 환경을 제공함 1. 웹소켓의 동작 방식1. 핸드셰이크웹소켓 연결을 시작할 때 클라이언트는 HTTP 요청을 통해 웹소켓 핸드셰이크를 수행함.이 과정에서 `Upgrade: websocket`이라는 헤더를 사용하여 HTTP를 웹소켓 프로토콜로 업그레이드함.서버가 이 요청을 수락하면 연결이 확립됨. 2. 양방향 통신핸드셰이크 후, 연결이 설정되면 양방향으로 데이터를 실시간으로 주고받을 수 있음.클라이언트와..
Zeppelin에서 Flink를 사용하는 방법Zeppelin에서 Flink를 사용하는 방법은 다음과 같음.Zeppelin은 여러 데이터 처리 엔진을 통합하여 사용 가능한 인터페이스를 제공함.Flink는 실시간 스트리밍 및 배치 처리 기능을 제공하는 분산 처리 엔진임.두 시스템을 연동하여 사용할 수 있음. 1. Zeppelin 설치 및 설정Zeppelin이 설치되어 있지 않은 경우, 먼저 Zeppelin을 설치해야 함.Zeppelin은 다양한 인터페이스를 통해 여러 데이터 엔진과 상호작용할 수 있는 도구임.Flink와 같은 엔진을 사용하려면 해당 플러그인을 Zeppelin에 설치하고 설정해야 함.Zeppelin 다운로드 및 설치하는 가이드는 다음과 링크를 참조하면 됨.https://zeppelin.apac..
Apache livyApache livy는 Spark 작업을 관리하고 상호작용하기 위한 REST 인터페이스를 제공하는 오픈소스 서비스임.Livy는 Apache Spark와 외부 애플리케이션 간의 통신을 간소화하며, Spark 클러스터를 관리할 수 있는 고수준의 API를 제공함.이를 통해 애플리케이션은 Spark와 보다 쉽게 통합할 수 있으며, 특히 웹 기반의 인터페이스나 애플리케이션에서 유용하게 사용됨. Apache livy의 주요 기능1. REST API 기반의 Spark 세션 관리Livy는 사용자가 REST API를 통해 Spark 세션을 생성하고 관리할 수 있도록 도와줌.Spark 세션을 생성하면 Livy는 이 세션을 백그라운드에서 관리하며, 다양한 프로그래밍 언어(Java, Scala, Pytho..
제플린 실행 프로세스제플린이 실행될 때 여러 개의 프로세스가 작동하면서 사용자의 데이터 분석을 위해 인터렉션할 수 있는 환경을 설정함.이 과정에서 가장 중요한 부분은 제플린 서버의 구동과 인터프리터 프로세스의 실행 및 관리임. 1. 제플린 서버 프로세스 시작아파치 제플린의 실행은 제플린 서버 프로세스부터 시작됨.이 프로세스는 자바로 작성된 메인 애플리케이션으로, 아파치 제플린의 핵심 기능들을 관리함. 1. 제플린 메인 프로세스 시작사용자는 bin/zeppelin.sh start 명령어를 통해 제플린 서버를 시작함.이 명령어는 기본적으로 제플린이 설치된 위치에서 ZeppelinServer 라는 Java 애플리케이션을 시작하게 함. 2. JVM 프로세스 실행ZeppelinServer는 JVM 위에서 동작함...
분산 시스템분산 시스템은 여러 개의 독립적인 컴퓨터들이 협력하여 하나의 시스템처럼 작동하는 컴퓨터 네트워크를 의미함.각 컴퓨터는 독립적으로 동작할 수 있지만, 전체적으로 하나의 일관된 목표를 위해 서로 협력하며 작업을 수행함.이는 현대의 IT 인프라에서 핵심적인 기술임.대규모 데이터 처리, 고가용성, 확장성, 성능 최적화를 위해 많이 사용됨.분산 시스템은 다음과 같은 핵심 요소와 특징을 가지고 있음. 1. 기본 개념 및 구성 요소1. 노드분산 시스템에서 노드는 독립적으로 작동하는 컴퓨터나 프로세스를 의미함.노드는 서버, 클라이언트, 혹은 데이터베이스 등으로 구성될 수 있음. 2. 네트워크분산 시스템의 노드들은 네트워크를 통해 서로 통신함.인터넷, LAN, 혹은 클라우드 네트워크를 사용할 수 있음. 3. ..
HeliumApache Zeppelin의 Helium은 Zeppelin 노트북의 기능을 확장하고 사용자 경험을 향상시키기 위해 플러그인 형태로 제공되는 프레임워크임.이를 통해 사용자는 시각화, 데이터 처리 및 변환, 인터랙티브 대시보드 등을 더 효율적으로 만들고 확장할 수 있음.Helium은 다양한 플러그인을 통해 Apache Zeppelin의 기본 기능을 보완하거나 전혀 새로운 기능을 추가할 수 있음. Helium의 구조 및 주요 개념Helium은 크게 두 가지 주요 요소로 구성됨.Visualization 플러그인과 Application 플러그인임. 1. Visualization 플러그인시각화 플러그인은 Zeppelin 노트북의 데이터 시각화 기능을 확장함.기본적으로 Zeppelin은 테이블, 파이 차..
앵귤러앵귤러는 구글이 개발 및 유지보수하고 있는 오픈소스 웹 애플리케이션 프레임워크임.앵귤러는 앵귤러JS로 시작해, 2016년 완전히 재설계된 앵귤러가 등장했고, 이전 버전과 구별됨.앵귤러는 대규모 웹 애플리케이션을 구축하는 데 필요한 다양한 기능을 통합적으로 제공하는 프레임워크임.강력한 구조화와 일관성을 갖춤.현대의 리치 프론트엔드 애플리케이션을 만들기 위한 다양한 도구와 기능을 내장하고 있으며, 규모가 크고 복잡한 프로젝트에 적합함. 1. 프레임워크와 라이브러리의 차이앵귤러는 프레임워크로 리액트와 같은 라이브러리와는 근본적으로 다름.프레임워크는 애플리케이션의 구조와 설계를 규정하고, 개발자의 코드가 프레임워크의 규칙에 따라 동작하도록 강제함.반면, 라이브러리는 특정 기능을 제공하며 개발자가 필요에 따..
org.glassfish.hk2org.glassfish.hk2 패키지는 Java EE (Enterprise Edition) 및 Jakarta EE 환경에서 사용되는 의존성 주입 프레임워크인 HK2(Hundred Kilobyte Kernel)를 제공하는 GlassFish 프로젝트의 일부임.HK2는 경량(헤드리스) 의존성 주입 시스템으로, GlassFish 애플리케이션 서버 및 다른 다양한 Java 기반 시스템에서 사용됨. 주요 개념과 기능1. 의존성 주입HK2는 객체 간의 의존성을 관리하며, 개발자가 직접 객체를 생성하거나 관리할 필요 없이 의존성을 주입하는 방식으로 애플리케이션을 구성할 수 있게 해줌.Java EE 환경에서 자주 사용되는 CDI와 비슷한 개념임. 2. 서비스 및 서비스 로케이터HK2에서는..