목록분류 전체보기 (135)
Connecting
사용자가 www.google.com 도메인을 입력했을 경우 네트워크계층(L3)에서는 도메인을 통해 통신이 불가능하기 때문에 IP주소로 변경하기 위해 DNS(Domain Name System)를 사용한다. 따라서 인터넷에 연결된 각각의 서버는 공인 IP주소를 가지고 있으나, 사용자는 복잡한 구조의 숫자를 기억할 필요가 없다. 즉, 서버를 운영하기 위해서는 도메인과 이에 대응되는 공인IP가 있어야 하며, 구글 DNS(8.8.8.8), 클라우드플레어 DNS(1.1.1.1) 등의 DNS서버가 PC에 설정되어 있어야 한다. 물론 수동으로 설정하지 않아도 자동으로 ISP 사업자에서 운영하는 DNS 서버로 할당 될 수 있다. 일반적으로 공인 IP는 하나의 도메인에 맵핑되기 때문에 DNS 조회를 하면 다음과 같은 결과..
처음 시작할 때 AWS는 매우 복잡하게 느껴질 수 있다. 다양한 설루션과 기능을 선택하는 데 있어 기존 오프레미스 방식과 근복적으로 다른 체계를 가지고 있으며, 요금 정책 또한 다양하기 때문이다. 이번 시간에서는 AWS를 접근하기 위해 필요한 기본적인 구조와 사용방법, 실습을 다루고 있다. 본 튜토리얼은 AWS 공식 홈페이지를 기반으로 작성되었음을 알린다. AWS 핵심 개념 AWS는 기존 사용자의 경험과 상관없이 시작할 수 있도록 설계 및 구성되어 있으며, 이 과정에서 AWS 5대 원칙 (AWS Well-Architected)를 따른다. AWS Well-Architected는 애플리케이션 및 워크로드에 사용할 보안, 성능, 복구 등 효율성이 뛰어난 인프라스트럭처 구조를 만들기 위해 만들어졌다. AWS W..
Shell Loop Control 본 장에서는 반복문을 Shell에서 반복문을 제어하는 방법에 대해서 알아본다. 지난 챕터에서는 반복문의 종류와 이를 사용하는 방법에 대해서 알아보았지만 때때로 반복문 제어를 통해서 적절한 문장을 수행할 수 있다. The infinite Loop 대부분의 조건문에서는 조건이 있기 때문에 조건이 충족되면 반복문을 나갈 수 있다. 무한 루프는 이러한 조건이 충족되지 않고 계속해서 반복문이 수행하면서 문장을 수행하는 것을 말한다. Example #!/bin/bash A=10 until [ $A -lt 10 ] do echo $A a=`expr $A + 1` done while 문을 통해 0 ~ 9까지 숫자를 표기하는 예제에서 A는 10보다 크거나 같고 절대로 10보다 작아지지 ..
본 문서는 Kafka 공식 문서 및 GitHub을 기준으로 작성되었음을 알린다. Apache Kafka producer와 consumer를 구현할 때 사용하는 다양한 언어기반의 클라이언트를 제공한다. 지원하는 언어는 다음과 같다. Java Ruby Python C C++ Go 본 글에서는 Go언어를 기반으로 Kafka Example을 작성하는 방법을 알아보도록 한다. Kafka docker-compose.yml 애플리케이션을 실행하기 전에 Apache Kafka를 docker-compose를 통해 실행한다. $ git clone https://github.com/confluentinc/cp-docker-images.git $ cd cp-docker-images/examples/kafka-single-no..
Shell Loop Types 이번 시간에서는 Unix Shell에서 사용하는 반복문에 대해서 알아본다. 반복은 일련의 명령을 반복할 수 있도록 하는 프로그래밍 도구로서 아래에서 다양한 반복문 종류를 살펴보도록 한다. 각각의 반복문은 상황에 따라서 적절하게 선택할 수 있어야 한다. The while loop while 반복문은 조건이 발생할 때까지 명령을 지속적으로 실행한다. 문법 while command do Statement(s) to be executed if command is true done Example #!/bin/sh a=0 while [ $a -lt 10 ] do echo $a a=`expr $a + 1` done $ ./while.sh 0 1 2 3 4 5 6 7 8 9 The for..
Shell Decision Making 이번 장에서는 Unix Shell에서 특정 조건일 때, 올바른 수행이 가능하도록 하는 조건문에 대해서 알아본다. The if...else statements if else 문은 주어진 옵션 집합에서 조건을 선택할 수 있도록 지원한다. 어떠한 조건에 대해서 True가 될 때 지정된 문이 실행되고, False일 경우 실행되지 않는다. 대부분 비교 연산자를 통해 작성한다. 아래 실습을 통해 알아볼 것이지만 각 구문에 대한 공백을 지켜야 오류가 발생하지 않는다. if...fi statement 문법 if [ expression ] then Statement(s) to be executed if expression is true fi Example #!/bin/bash a=..
Vagrant 사용법 퍼블릭 클라우드를 이해하기 위해 지난 시간 대표적인 Amazone AWS, Microsoft Azure, Google GCP 3가지 퍼블릭 클라우드의 특징을 확인했다. 이번 챕터에서는 Vagrant를 통해서 자신의 PC에서 가상화 시스템을 운영하면서 IaC (Infrastructure as Code)에 대한 간단한 콘셉트를 이해하도록 한다. IaC (Infrastructure as Code) 인프라스트럭처 시스템은 서버, 네트워크, 보안, 스토리지 등 다양한 서비스를 안정적으로 운영하기 위해 발전했으며, 이를 관리하기 위한 복잡도 역시 증가하였다. 하나의 애플리케이션을 구성하고 이를 배포하기에 수 많은 시스템 간의 연계 및 구성이 필요하고 빠르게 변화하는 IT 산업에서 민첩성이 중요..
다양한 쉘 종류에 따라 연산자도 다양하지만 이번 시간에서는 가장 기본적인 bash 쉘의 기본 연산자에 대해 설명한다. 산술 연산자 관계 연산자 Boolean 연산자 문자열 연산자 파일 테스트 연산자 bash의 경우 간단한 산술 연산을 수행하는 메커니즘이 존재하지 않기 때문에 awk 혹은 expr과 같은 기본 명령을 사용한다. bash에서 진행하는 간단한 숫자 계산 기본적으로 bash에서는 사칙연산이 모두 가능하지만 나누기 소수점 계산은 불가능하며, 모두 정수형으로 취급된다. 따라서 awk나 bc 명령을 통해서 소수점 계산을 처리해야 한다. bash 변수 처리 x=3 y=4 z=$((x+y)) echo $z # 7 echo $((x-y)) echo $((x*y)) echo $((x/y)) # -1 # 12..
쉘 스크립트 배열 이번 시간에서는 쉘 스크립트에서 배열을 사용하여 변수의 집합을 그룹화하는 방법을 알아본다. 배열 정의 우리가 지금까지 쉘 스크립트에서 변수를 선언할 때 다음과 같은 방법을 사용했다. #!/bin/bash NAME01="Lucas" NAME02="soengwon" NAME03="wisoft" NAME04="hanbat" echo $NAME01 위에서 정의한 변수를 배열로 정의하면 다음과 같이 사용할 수 있다. #!/bin/bash NAME[0]="Lucas" NAME[1]="soengwon" NAME[2]="wisoft" NAME[3]="hanbat" echo "First Index: ${NAME[0]}" echo "Second Index: ${NAME[1]}" 만약 모든 배열에 접근하고..
이번 시간에는 Docker를 활용하여 카프카를 실행하고 CLI 환경에서 토픽을 생성하고, 생산자 및 소비자 환경을 구축하여 메시지 전달 방식에 대해 실습한다. 본 실습은 confluent에서 제공하는 기본 튜토리얼을 바탕으로 진행하였으며, Docker 기반으로 실행해야 하므로 본인이 사용하고 있는 환경에 Docker 설치가 완료되어 있어야 한다. 만약 Docker 설치가 어렵거나 네이티브로 실행해야 하는 경우 이전시간에 윈도우, 우분투를 기반으로 설치방법을 기술하였으니 전 챕터를 확인하길 바란다. 카프카 설치 필자 환경은 다음과 같다. MacBook Pro 2019 16인치 Intel Core i9, 32GB macOS Big Sur 11.1 Docker version 20.10.0-rc1, build ..