분류 전체보기120 [Network] 도메인 주소 입력 시 데이터 요청 과정 일반적으로 인터넷을 이용할 때, 간편하게 도메인 주소를 이용하여 접속을 하지만, 그 과정에 대하여 잘 알지 못하고 당연하게 이용하였기에 자세히 알아보자는 취지에서 주제를 정하고 조사하게 되었다. 브라우저에 도메인 주소(ex : www.youtube.com)를 입력했을 때 데이터를 요청하고 받아오는데 일어나는 과정은 크게 5가지의 단계로 나누어서 볼 수 있다. 1. 입력한 URL을 기반으로 DNS 검색 (캐싱 조회) 브라우저는 입력한 URL을 DNS 서버에 요청하기 전에 브라우저에 캐싱된 DNS에 일치하는 IP가 있는지 조회를 하고, 존재한다면 그것을 이용하고, 존재하지 않는다면 DNS 서버에 요청을 하게 된다. 2. 인접한 DNS 서버에 DNS query 전달 (DNS 서버 요청 - 반복) ISP(In.. 2023. 6. 25. [Docker] Dind (Docker in docker) / Dood(Docker out of docker) Jenkins와 같이 CI/CD 툴을 Docker 컨테이너로 이용할 때, 타 WAS의 이미지를 빌드하고 컨테이너로 사용하려고 하면 아래와 같은 고민사항이 있을 것이다. Jenkins 컨테이너 내부에서는 로컬호스트와 격리된 환경이기 때문에 이미지를 빌드할 때 이용될 때에는 어떤 도커를 기반으로 이미지를 생성할지, 컨테이너의 각 환경은 어떻게 외부와 통신을 할 것인지 등의 의문이 들 것이다. 그렇기 때문에 다음과 같은 개념이 생기게 되었다. 1. Dind(Docker in docker) Dind(Docker in docker)는 문자의 의미 그대로 도커 내부에서 로컬 호스트에서 이용하는 도커와는 다른 별도의 도커를 사용한다는 의미이다. 그 예시로 Jenkins 컨테이너에서 도커 이미지를 빌드하려면 도커가 필.. 2023. 6. 24. [Docker] 볼륨 마운트 / 바인드 마운트 도커에서 이미지를 이용하여 컨테이너를 생성할 때, 기본적으로 컨테이너를 생성하고 난 뒤의 데이터들은 컨테이너가 삭제되면서 같이 삭제된다. 이를 컨테이너와 함께 삭제되지 않도록 로컬 호스트에 위치하도록 하고 싶거나, 컨테이너에 내부에서 사용되는 디렉토리 또는 파일을 로컬 호스트 또는 다른 컨테이너와 동시에 참조할 필요성이 있을 때, 도커에서 제공하는 볼륨 마운트와 바인드 마운트 기능을 이용하면 된다. 1. 볼륨 마운트 볼륨 마운트는 도커 컨테이너에서 사용할 특정 볼륨을 생성한 후 컨테이너를 이용할 때 해당 볼륨과 마운트 하여 이용한다는 것으로 아래 순서를 통해 이용이 가능하다. 1) 볼륨 생성 # 볼륨 생성 $ docker volume create my-volume 1-1) 볼륨 확인 # 볼륨 상세 확인 .. 2023. 6. 21. [CS] Iterator / Generator 1. Iterator (반복자) 프로그래밍에서는 다양한 타입의 객체가 존재한다. 문자를 나타내는 char, 문자열을 나타내는 string와 정수를 나타내는 integer와 같은 타입과 Array나 List와 같은 다양한 형식을 객체는 가질 수 있는데, 그중에서 Array와 List 같이 각각의 원소를 순회할 수 있는 객체를 Iterable 하다고 칭한다. 이러한 점에서 유추할 수 있는 것처럼 Iterator 또한 크게 다르지 않다. 다음은 Python에서 반복자의 예시이다. Example : # 예제 리스트 a = [1,2,3,4,5] # 예제 리스트의 Iterator 객체 iter_a = iter(a) # 첫 번째 원소 print(next(iter_a)) # 두 번째 원소 print(next(iter_.. 2023. 5. 4. [Kafka] Kafka란? 1. Kafka : 아파치 카프카(Apache Kafka)는 LinkedIn에서 개발되었으며, Java 및 Scala 기반의 고용량 실시간 데이터 스트림에 특화된 분산 스트리밍 플랫폼이다. 카프카는 이벤트 브로커라고도 하며, Topic이라는 이벤트 스트리머를 통한 메시지 처리를 한다. 발생한 이벤트에 따라서 토픽에 메시지를 발행하고, 토픽을 구독하고 있는 소비자가 메시지를 소비함으로써 이벤트를 처리하여 해당 오프셋을 표시하고 파티션을 통한 분산저장을 통하여 안정성을 보장한다. 2. Kafka의 구성 요소 : Kafka의 구성은 크게 아래의 4가지로 볼 수 있다. 1. Zookeeper : 카프카 클러스터를 관리하고, 메타 데이터를 관리하는 역할을 수행한다. 2. Kafka Broker : 카프카 브로커로.. 2023. 4. 28. [CS] 객체 지향 프로그래밍 (Object-Oriented Programming) / SOLID 프로그래밍을 시작하면서, 객체 지향과 절차 지향과 같은 용어에 대하여 많이 접해봤을 것이다. 프로그래밍을 하는 관점에서 어떠한 기준을 두고 프로그래밍을 할 지에 관한 것이기에 다소 낯선 개념으로 느껴질 수도 있을 것이다. 그중 객체 지향 프로그래밍(OOP)과 그 원칙인 SOLID에 관하여 다루어 볼 것이다. 1. 객체 지향 프로그래밍(Object-Oriented Programming) 객체 지향 프로그래밍은 말 그대로 프로그래밍에서 모든 관점을 객체 중심으로 설계하여 프로그래밍하는 것을 의미하며, 이는 사람이 사물을 하나의 객체로 이해하는 것처럼, 이를 프로그래밍에 도입한 개념이다. 객체 지향 프로그래밍에서 큰 개념은 3가지로 나뉘어서 구분할 수 있다. 객체 자체를 의미하는 Object, 객체를 추상화한.. 2023. 4. 22. 이전 1 ··· 12 13 14 15 16 17 18 ··· 20 다음