전체 글 146

Chater02. 네트워크 - 네트워크 기기

2.3 네트워크 기기 네트워크는 여러 개의 네트워크 기기를 기반으로 구축된다. 2.3.1 네트워크 기기의 처리 범위 네트워크 기기는 계층별로 처리 범위를 나눌 수 있다. 물리 계층을 처리할 수 있는 기기와 데이터 링크 계층을 처리할 수 있는 기기 등이 있다. 그리고 상위 계층을 처리하는 기기는 하위 계층을 처리할 수 있지만 그 반대는 불가하다. 예를 들어 L7 스위치는 애플리케이션 계층을 처리하는 기기로 그 밑의 모든 계층의 프로토콜을 처리할 수 있다. 하지만 AP는 물리 계층밖에 처리하지 못한다. - 애플리케이션 계층 : L7 스위치 - 인터넷 계층 : 라우터, L3 스위치 - 데이터 링크 계층 : L2 스위치, 브리지 - 물리 계층 : NIC, 리피터, AP 2.3.2 애플리케이션 계층을 처리하는 기..

Chater02. 네트워크 - TCP/IP 4계층 모델

2.2 TCP/IP 4계층 모델 인터넷 프로토콜 스위트(internet protocol suite)는 인터넷에서 컴퓨터들이 서로 정보를 주고받는 데 쓰이는 프로토콜의 집합이며, 이를 TCP/IP 4계층 모델로 설명하거나 OSI 7계층 모델로 설명하기도 한다. 이 책에서는 TCP/IP(Transmission Control Protocol/Internet Protocol) 4계층 모델을 중심으로 설명하며, 이 계층 모델은 네트워크에서 사용되는 통신 프로토콜의 집합으로 계층들은 프로토콜의 네트워킹 범위에 따라 네 개의 추상화 계층으로 구성된다. 2.2.1 계층 구조 TCP/IP 계층은 네 개의 계층을 가지고 있으며 OSI 7계층과 많이 비교한다. 앞의 그림처럼 TCP/IP 계층과 달리 OSI 계층은 애플리케이..

Chater02. 네트워크 - 네트워크의 기초

2.1 네트워크의 기초 네트워크란 노드(node)와 링크(link)가 서로 연결되어 있으며 리소스를 공유하는 집합을 의미한다. 여기서 노드란 서버, 라우터, 스위치 등 네트워크 장치를 의미하고 링크는 유선 또는 무선을 의미한다. 2.1.1 처리량과 지연 시간 네트워크를 구축할 때는 '좋은' 네트워크로 만드는 것이 중요하다. 좋은 네트워크란 많은 처리량을 처리할 수 있으며 지연 시간이 짧고 장애 빈도가 적으며 좋은 보안을 갖춘 네트워크를 말한다. 처리량 처리량은 링크 내에서 성공적으로 전달된 데이터의 양을 말하며 보통 얼만큼의 트래픽을 처리했는지를 나타낸다. "많은 트래픽을 처리한다 = 많은 처리량을 가진다"라는 의미다. 단위로는 bps(bits per second)를 쓴다. 초당 전송 또는 수신되는 비트..

Chater01. 디자인 패턴과 프로그래밍 패러다임 - 프로그래밍 패러다임

1.2 프로그래밍 패러다임 프로그래밍 패러다임은 프로그래머에게 프로그래밍의 관점을 갖게 해주는 역할을 하는 개발 방법론이다. 예를 들어 객체지향 프로그래밍은 프로그래머들이 프로그램을 상호 작용하는 객체들의 집합으로 볼 수 있게 하는 반면에 함수형 프로그래밍은 상태 값을 지니지 않는 함수 값들의 연속으로 생각할 수 있게 해준다. 어떤 언어는 특정한 패러다임을 지원하기도 하는데, jdk 1.8 이전의 자바는 객체지향 프로그래밍을 지원하는 반면에, 하스켈은 함수형 프로그래밍을 지원한다. 여러 패러다임을 지원하는 언어로는 C++, 파이썬, 자바스크립트가 있으며 자바의 경우 jdk 1.8 부터 함수형 프로그래밍 패러다임을 지원하기 위해 람다식, 생성자 레퍼런스, 메서드 레퍼런스를 도입했고 선언형 프로그래밍을 위해..

Chater01. 디자인 패턴과 프로그래밍 패러다임 - 디자인 패턴(2)

1.1.5 프록시 패턴과 프록시 서버 앞서 설명한 프록시 객체는 사실 다지인 패턴 중 하나인 프록시 패턴이 녹아들어 있는 객체이다. 프록시 패턴 프록시 패턴은 대상 객체에 접근하기 전 그 접근에 대한 흐름을 가로채 대상 객체 앞단의 인터페이스 역할을 하는 디자인 패턴이다. 이를 통해 객체의 속성, 변환 등을 보완하며 보안, 데이터 검증, 캐싱, 로깅에 사용한다. 이는 앞서 설명한 프록시 객체로 쓰이기도 하지만 프록시 서버로도 활용된다. 프록시 서버에서의 캐싱 캐시 안에 정보를 담아두고 캐시 안에 있는 정보를 요구하는 요청에 대해 다시 저 멀리 있는 원격 서버에 요청하지 않고 캐시 안에 있는 데이터를 활용하는 것을 말한다. 이를 통해 불필요하게 외부와 연결하지 않기 때문에 트래픽을 줄일 수 있다는 장점이 ..

Chater01. 디자인 패턴과 프로그래밍 패러다임 - 디자인 패턴(1)

라이브러리 vs 프레임워크 라이브러리 공통으로 사용될 수 있는 특정한 기능들을 모듈화한 것을 의미한다. 폴더명, 파일명 등에 대한 규칙이 없고 프레임워크에 비해 자유롭다. 예를 들어 무언가를 자를 때 '도구'인 '가위'를 사용해서 '내가' 직접 컨트롤하여 자르는데, 라이브러리는 이와 비슷하다. 프레임워크 공통으로 사용될 수 있는 특정한 기능들을 모듈화한 것을 의미한다. 폴더명, 파일명 등에 대한 규칙이 있으며 라이브러리에 비해 좀 더 엄격하다. 다른 곳으로 이동할 때, '도구' 인 비행기를 타고 이동하지만 '비행기'가 컨트롤하고 나는 가만히 앚아 있는다 프레임워크는 이와 비슷하다. 1.1 디자인 패턴 디자인 패턴이란 프로그램을 설계할 때 발생했던 문제점들을 객체 간의 상호 관계 등을 이용하여 해결할 수 ..

Docker 인터뷰(2)

11. 도커 엔진이란? Docker엔진은 클라이언트-서버를 나타낸다. Docker 요소와 서비스를 사용하여 컨테이너를 만들고 실행한다. Docker엔진과 클라이언트는모두 동일한 호스트(또는 원격 호스트)에 있어야 한다. 엔진은 클라이언트 측 CLI(명령줄 인터페이스)를 제공한다. 이를 통해 클라이언트와 엔진 간의 연결을 설정할 수 있다. 12. Docker 이미지는 무엇인가? 몇 가지 지침에 따라 도커 이미지가 생성된다. 이 지침은 작업 중인 응용프로그램의 완전히 실행 가능한 버전을 만드는 데 중점을 둔다. 도커 이미지 파일은 결국 Docker 컨테이너에서 코드를 실행하는 데 사용되는 다양한 앱 계층으로 구성된다. 이러한 이미지가 결합되어 컨테이너를 구성한다. 13. Docker 컨테이너란? 도커 컨테이..

Back-End/Docker 2022.11.26

Docker 인터뷰(1)

1. 도커란? 도커는 그룹 PaaS 모델, 오픈 소스이며 가볍다. 현재 가장 널리 사용되는 가상화 또는 컨테이너화 기술 중 하나이다. 컨테이너를 사용하여 애플리케이션을 구축, 배포 및 실행하면 이 전체 프로세스가 더 쉽고 비용 효율적이다. 컨테이너에서 개발자는 필요한 모든 부분(예 : 라이브러리, 데이터베이스 등)으로 애플리케이션을 패키징하고 단일 패키지로 래핑한다. 이는 사용자에게 상당한 성능 향상을 제공하고 애플리케이션 크기를 줄여 사용하기 쉽게 만든다. 2. 도커는 어떻게 작동하는가? Docker는 포괄적인 방식으로 작동한다. 클라이언트-서버 아키텍처를 기반으로 하며 클라이언트, 컨테이너가 있는 데몬으로서의 호스트, 작동할 이미지가 있는 도커 레지스트리가 필요하다. 도커 클라이언트 : Docker ..

Back-End/Docker 2022.11.26

Spring IoC(제어의 역전) / DI(의존성 주입)

1. Inversion Of Control (IOC) 프로그램의 흐름 (객체의 생성, 생명주기)을 개발자가 직접 제어하는 것이 아닌 외부에서 제어 및 관리를 해주는 것을 말한다. 2. IOC Container 스프링에서는 Application을 구성하는 Bean을 관리하기 위하여 IOC개념을 이용, Spring IOC Container가 객체를 관리함으로써 DI(의존성 주입), AOP(관점 지향 프로그래밍)이 가능해지게 된다. Spring IOC Container가 주도권을 가져감으로써 객체의 관리, 의존 관계의 결정 및 설정 등의 역할을 맡게 된다. 3. Dependency Injection (DI) 객체의 의존성을 개발자가 아닌 외부 (IOC Container)에서 주입함으로써 객체간의 결합을 약하게..

Back-End/Study 2022.11.24

Spring과 Spring Boot

Spring Framework 스프링 프레임 워크(Spring Framework)는 자바 플랫폼을 위한 오픈소스 애플리케이션 프레임워크로서 간단히 스프링(Spring)이라고도 불린다. 동적인 웹 사이트를 개발하기 위한 여러 가지 서비스를 제공하고 있다. 대한민국 공공기관의 웹 서비스 개발 시 사용을 권장하고 있는 전자정부 표준프레임워크의 기반 기술로서 쓰이고 있다. 장점 경량 컨테이너 IoC(Invertion of Control : 제어 역행) Di(Dependency Injection : 의존성 주입) AOP(Aspect-Oriented Programming : 관점 지향 프로그래밍) Spring Boot 스프링 프레임워크는 기능이 많은 만큼 환경설정이 복잡한 편이다. 이에 어려움을 느끼는 사용자들을 ..

Back-End/Study 2022.11.24