배치(Batch)란?

배치는 일반 프로세스의 일종으로 일련의 작업을 지정한 특정 시간에 실행합니다. 지정한 시간 이후에는 자원을 거의 소비하지 않는 것이 특징입니다.

데몬(Deamon)이란?

특정 서비스를 위해 백그라운드 상태에서 계속 실행되는 서버 프로세스입니다. 일반적으로 각 서비스가 사용하는 port를 관리하는 관리하는 데몬이 존재합니다. 데몬은 서버가 부팅될 때 메모리에 로딩이 되고 서버가 죽을 때까지 계속 자원을 할당받고 있습니다. 데몬은 서버가 죽을 때까지 자원을 점유하고 있는 형태여서 많은 데몬이 실행된다면 자원 소비가 큽니다.

윈도우에서는 데몬을 서비스라 부릅니다.

'서버' 카테고리의 다른 글

데몬(Daemon), 배치(Batch)란?  (0) 2019.09.01
crontab 초 단위 실행하기  (0) 2019.02.02
프로비저닝(Provisioning)이란?  (1) 2019.02.02
엣지 컴퓨팅(Edge Computing) 이란?  (0) 2019.01.29
Jupyter Notebook이란?  (0) 2017.10.18
Ansible이란?  (1) 2017.10.18

crontab의 최소 실행시간은 분입니다. 하지만 편법으로 초 단위로 실행할 수 있습니다. 

아래는 30초마다 스크립트를 실행하는 예제입니다.

* * * * * /home/test.sh & sleep 30;/home/test.sh;


sleep을 사용하여 test.sh 스크립트가 1번 실행된 후, 30초 멈춘 다음 다시 세미콜론으로 연결된 test.sh 스크립트를 실행하는 방법입니다. 

아래는 10초 마다 스크립트를 실행 한 후, 성공과 실패 로그를 파일에 쓰는 예시입니다.

* * * * * /home/test.sh > /home/success.log 2>/home/err.log & sleep 10; /home/test.sh > /home/success.log 2>/home/err.log & sleep 10; /home/test.sh > /home/success.log 2>/home/err.log & sleep 10; /home/test.sh > /home/success.log 2>/home/err.log & sleep 10; /home/test.sh > /home/success.log 2>/home/err.log & sleep 10; /home/test.sh > /home/success.log 2>/home/err.log;


'서버' 카테고리의 다른 글

데몬(Daemon), 배치(Batch)란?  (0) 2019.09.01
crontab 초 단위 실행하기  (0) 2019.02.02
프로비저닝(Provisioning)이란?  (1) 2019.02.02
엣지 컴퓨팅(Edge Computing) 이란?  (0) 2019.01.29
Jupyter Notebook이란?  (0) 2017.10.18
Ansible이란?  (1) 2017.10.18

프로비저닝(Provisioning)이란 어떠한 지식이나 자원 등을 미리 준비해놓고 요청이 들어왔을 때, 해당 요청에 맞게 공급하는 것을 의미합니다. 즉 사용자 혹은 비지니스 요구사항에 맞게 할당, 배치, 배포하여 시스템을 사용가능하도록 준비하는 절차를 뜻합니다.

프로비저닝은 아래와 같이 분류할 수 있습니다.

서버 자원 프로비저닝

서버의 CPU, Memory 등의 자원을 할당 또는 적절하게 배치하여 운영이 가능하도록 준비

OS 프로비저닝

OS 를 서버에 설치하고, 구성 작업을 해서 OS가 동작 가능하도록 준비

소프트웨어 프로비저닝

소프트웨어(WAS, DBMS, 어플리케이션 등) 를 시스템에 설치 배포하고 필요한 구성을 세팅해서 실행 가능하도록 준비

스토리지 프로비저닝

낭비되거나 사용되지 않는 스토리지를 식별하고 공통 풀에서 옮긴 후 스토리지에 대한 요구가 접수 되면 관리자는 공통 풀에서 스토리지를 꺼내 사용 효율성을 높일 수 있는 인프라 구축 가능하도록 준비

'서버' 카테고리의 다른 글

데몬(Daemon), 배치(Batch)란?  (0) 2019.09.01
crontab 초 단위 실행하기  (0) 2019.02.02
프로비저닝(Provisioning)이란?  (1) 2019.02.02
엣지 컴퓨팅(Edge Computing) 이란?  (0) 2019.01.29
Jupyter Notebook이란?  (0) 2017.10.18
Ansible이란?  (1) 2017.10.18
  1. 이충엽 2019.03.20 16:21

    너무 감사합니다. 불곰 없었으면 전 개발 못했을거예요.

클라우드 컴퓨팅 탄생 이후 문제점이 발생하여 이를 해결하고자 엣지 컴퓨팅 개념이 탄생했습니다. 아래에서 클라우드 컴퓨팅의 문제점과 엣지 컴퓨팅의 정의에 대해 설명하겠습니다.

클라우드 컴퓨팅 문제점

클라우드 컴퓨팅이란 인터넷을 통해 서버, 저장소, 소프트웨어, 분석 등의 컴퓨팅 서비스를 제공하는 것입니다. 네이버의 NDrive, 구글 Docs 등이 클라우드 컴퓨팅의 대표적인 예로 볼 수 있습니다. 클라우드 컴퓨팅이 탄생한 이후, 각광 받으며 여러 기업들이 클라우드 환경으로 전환하였습니다.

그러나 최근 들어 이런 클라우드 컴퓨팅에도 여러 문제점이 있습니다. 클라우드 서비스를 이용하는 사람들이 기하급수적으로 늘어나면서 서버 및 데이터 센터에서 처리할 수 있는 데이터의 양을 넘어서기 시작했고 수집한 데이터를 분석하고 송신하는 과정에서 발생하는 데이터 지연 현상도 문제점으로 발생했습니다. 또한 클라우드 컴퓨팅의 통신 과정에서 보안 문제도 발생했습니다.

데이터 처리 속도, 용량 및 보안 등의 문제를 해결하기 위해 탄생한 것이 엣지 컴퓨팅입니다.

엣지 컴퓨팅이란?

말단 기기에서 컴퓨팅을 수행하는 것을 엣지 컴퓨팅이라 합니다. 클라우드 컴퓨팅은 데이터를 처리하는 곳이 데이터 센터에 있는반면 엣지 컴퓨팅은 스마트폰과 같은 장치에서 데이터를 처리합니다. 더 자세하게 정리하자면 엣지 컴퓨팅은 분산된 개방형 아키텍처로서 분산된 처리 성능을 제공하여 모바일 컴퓨팅 및 IoT 기술을 지원합니다. 

클라우드 컴퓨팅 VS 엣지 컴퓨팅

엣지 컴퓨팅이 필요한 이유


엣지 컴퓨팅은 대기 시간 없이 실시간 데이터 처리를 지원합니다. 클라우드 컴퓨팅을 이용했을 때, 생성된 데이터를 클라우드로 전송하고 전송받은 클라우드에서 데이터를 가공했다면 엣지 컴퓨팅은 스마트 애플리케이션 및 장치에서 데이터가 생성될 때, 즉각적으로 데이터에 대응하여 전송 시간을 줄여줍니다. 엣지 컴퓨팅을 사용하면 아래와 같은 장점 3가지를 보장할 수 있습니다.

데이터 부하 감소

클라우드 컴퓨팅을 사용했을 때, 처리해야 할 데이터 양이 많을수록 시스템에 부하가 생기는 반면, 엣지 컴퓨팅은 해당 기기에서 발생되는 데이터만 처리하기 때문에 부하를 줄일 수 있습니다.

보안

클라우드 컴퓨팅은 중앙 서버 아키텍처로 데이터 전송/전달 부터 보안을 강화해야 하는 반면, 엣지 컴퓨팅은 데이터 수집과 처리를 자체적으로 처리하기 때문에 클라우드 컴퓨팅에 비해 상대적으로 보안이 좋다고 할 수 있습니다. 

장애대응

클라우드 컴퓨팅을 사용했을 때 서버가 마비되면 치명적인 타격을 입지만 엣지 컴퓨팅을 사용하면 자체적으로 컴퓨팅을 수행하기 때문에 효과적으로 장애를 대응할 수 있습니다.


엣지 컴퓨팅 VS 클라우드 컴퓨팅

위 설명한 것만 보면 클라우드 컴퓨팅과 엣지 컴퓨팅 간 비교로 엣지 컴퓨팅이 무조건 좋아보입니다. 하지만 엣지 컴퓨팅의 장점을 두각시키기 위해선 클라우드 컴퓨팅과 혼합하여 사용해야 합니다. IoT의 경우, 클라우드 컴퓨팅으로 모든 디바이스의 데이터를 받아 연산처리를 진행했다면, 엣지 컴퓨팅을 접목시켜 각 디바이스 내에서 연산처리를 진행한 후, 해당 결과만 클라우드 컴퓨팅으로 전송하는 방식으로 진행하는 것이 두 컴퓨팅 아키텍처의 장점을 전부 살릴 수 있습니다.

'서버' 카테고리의 다른 글

crontab 초 단위 실행하기  (0) 2019.02.02
프로비저닝(Provisioning)이란?  (1) 2019.02.02
엣지 컴퓨팅(Edge Computing) 이란?  (0) 2019.01.29
Jupyter Notebook이란?  (0) 2017.10.18
Ansible이란?  (1) 2017.10.18
WSGI, WAS, CGI 이해  (0) 2017.04.19

Jupyter Notebook이란?

Jupyter Notebook은 오픈소스 웹 애플리케이션으로 라이브 코드, 등식, 시각화와 설명을 위한 텍스트 등을 포함한 문서를 만들고 공유하도록 할 수 있습니다.

주로 데이터 클리닝과 변형, 수치 시뮬레이션, 통계 모델링, 머신 러닝 등에 사용할 수 있습니다. 

Jupyter Notebook은 파이썬, R, Scala 등 데이터 과학 분야에서 인기있는 프로그래밍 언어를 지원합니다. 가장 큰 장점은 실시간으로 인터렉티브하게 데이터를 조장하고 시각화할 수 있도록 해준다는 점입니다.



'서버' 카테고리의 다른 글

프로비저닝(Provisioning)이란?  (1) 2019.02.02
엣지 컴퓨팅(Edge Computing) 이란?  (0) 2019.01.29
Jupyter Notebook이란?  (0) 2017.10.18
Ansible이란?  (1) 2017.10.18
WSGI, WAS, CGI 이해  (0) 2017.04.19
호스트 네임  (0) 2017.04.19

ansible이란?

  • 테스트 환경을 구축하는데 사용되는 툴 Provision & configuration management tool
  • python으로 개발되고 YAML이라는 언어를 통해 정의할 수 있고 json으로 통신
    • python Github project 중 상위 랭킹 (6위)
  • 해커 뉴스 분석을 보면 ansible이 많이 Mention 되어지고 있음
  • 오픈 소스 버전 (GPL)

ansible 장점 및 지원

  • 빠른 SSH통신, 빠른 provision이 가능
  • 추후 상용 환경에서 사용할 때 agent 기반이면 방화벽 이슈, agent 데몬 관리라는 불편한 점이 존재 (agent 방식은 확장성, 대규모 provision을 할 경우 매우 효과적이지만 서버와 통신하는 부분이 고도화되기 때문에 빠르고 간단한 provision을 할 수 없음)
  • 자동 배포 환경이 쉬움
  • 개발 가능성이 높은 오픈소스
  • 대부분이 멱등성을 제공
  • playbook
  • ad-hoc 지원.
  • 병렬 provisioning 지원.
  • vagrant
  • jinja2

멱등성(Idempotency)

  • 여러 번 적용해도 결과는 바뀌지 않음
  • 바뀌는 것이 없으면 당연히 배포되어도 바뀌지 않음
  • 바뀌는 부분이 있으면 그 부분만 반영
  • shell, command, file module은 보장 안됨

Ansible에서의 멱등성이란?

여러 번 ansible 툴을 사용하더라도 동일한 결과 값을 나올 수 있도록 제공되는 형태여야 합니다. 매번 다른 결과가 나오거나 에러가 나온다면 비 멱등성하다고 할수 있습니다. ansible 툴의 거의 대부분의 모듈은 멱등성을 제공합니다. 또한 멱등성을 제공하기 위해서 조건절을 제공하고 있습니다. 예를 들면, 처음 ansible 스크립트를 실행 후 다시 실행을 하면 상황에 따라서는 파일이 append가 될 수 있습니다. 그러나 멱등성의 원칙은 언제나 실행은 해도 결과가 동일하게 나옵니다. 또한 파일/디렉터리를 생성 또는 삭제하는 ‘create’ , ‘remove:’ 같은 ansible 모듈을 실행 할 때 ‘when;’ 조건절을 이용할수 있습니다. 대부분의 ansible 모듈이 멱등성을 보장한다는 의미는 상태를 파악할 수 있다는 의미를 가지게 됩니다.


ansible의 기본개념

ansible의 환경설정, 배포를 가능케 하는 언어입니다. 리모트 서버에 접속해서 무언가를 시행시키는 정책을 기술합니다. yaml 문법으로 정책이 기술되어 있으며 좀 더 고급 단계에서는 로드밸런서를 모니터링하는 복잡한 환경에서 사용할 수 있도록 합니다. 각 playbook은 하나 또는 하나 이상의 ‘play’를 두게 됩니다. Play의 목적은 여러 호스트들에 잘 정의된 ‘role’과 ‘task’를 매핑하는 역할을 합니다. Task는 ansible 모듈의 호출을 의미합니다. Role을 좀 더 편하게 관리하기 위해서 미리 정의된 yaml 파일을 include을 하는 것이 가능 합니다. 또한 host inventory 파일에 정의한 서버 그룹별로 각각 나누어 provision 할 수 있도록 할 수 있습니다. 서버당 디렉터리를 나누어서 각각의 설정 정보가 정의된 파일을 읽어 설치하게 합니다.

playbook

플레이북은 애드혹 테스트 실행 모드와는 완벽하게 다른 사용방법이며 특히 강력한 사용 방법입니다. 간단히 말해 플레이북은 정말 간단하게 설정을 관리하고 다수의 머신에 대한 배포 시스템에 대한 기본적인 단위입니다. 기존에 존재해왔던 것과 달리 복잡한 어플리케이션 형태의 배포에 매우 적합합니다. 플레이북은 설정을 정의할 수 있으며 특정 머신의 집합을 오가며 다른 작업을 수행하도록 수동으로 작업 순서를 설정하는것도 가능합니다. 이때에 작업은 동기 또는 비동기로 수행할 수 있습니다. /usr/bin/ansible 명령을 통한 애드혹 테스크를 실행하는 것에 반해 플레이북은 소스 컨트롤을 통해 보관하거나 사용자의 설정을 내보내거나 원격 시스템을 구성, 보장되는데 더욱 적합합니다. 플레이북을 통해 이러한 기술들을 구현하는 방법은 [Ansible-Example 저장소]에 정리가 되어있습니다.

ad-hoc

Adhoc 이라는 의미는 임시적으로 수행하는 의미. ansible의 playbook을 작성하여 수행하는 것이 아니라 임시적으로나 또는 특별하게 어떤 작업을 수행하기 위해서 사용할 수 있는 실행방법이라고 할 수 있음. 

Inverntory

리모트 서버에 대한 meta 데이터를 기술하는 파일입니다. Ansible에서는 inventory 파일에는 yaml을 적용하지 않았습니다. 기본 파일은 /etc/ansible/hosts를 읽게 하거나, 따로 inventory 파일을 만들고 옵션을 주어 동작하게 할수 있습니다. 만약 고정 ip를 가지고 있고 gosts 파일 안에 들어가 있지 않는 서버가 있다면 설정 파일을 만들수 있고 테스트 환경을 만들때 유용합니다.

Ansible의 한계

  • 시스템의 초기 설치 수행은 불가능 (kickstart, pxe 등을 사용하여야 함)
  • 시스템 모니터링은 지원하지 않음
  • 시스템 변경사항은 추적하지 않음


'서버' 카테고리의 다른 글

엣지 컴퓨팅(Edge Computing) 이란?  (0) 2019.01.29
Jupyter Notebook이란?  (0) 2017.10.18
Ansible이란?  (1) 2017.10.18
WSGI, WAS, CGI 이해  (0) 2017.04.19
호스트 네임  (0) 2017.04.19
[Linux] SSH (Secure Shell)  (0) 2017.03.27
  1. ingee 2018.11.20 15:42

    좋은 정리 감사합니다. 큰 도움 되었습니다.

+ Random Posts