솔트가 어떻게 작용하는지를 실제로 보면 알 수 있습니다. 즉, 콘솔에서 데이터 파일이 지나갔을 때 알아차리기 어려운 많은 일들이 후드 아래에서 일어나고 있습니다. Get Started Tutorials의 이 섹션에서는 Salt의 작동 방식, Salt 하위 시스템 및 Salt의 모듈식 아키텍처를 통해 Salt를 사용하고 확장하여 전체 인프라를 관리할 수 있는 방법에 대해 설명합니다.
솔트 구성요소의 세부 사항을 살펴보기 전에 솔트가 인프라 관리에 접근하는 방식에 대해 몇 가지 사항을 이해하는 것이 도움이 됩니다.
실시간 통신
모든 솔트 미니언은 동시에 명령을 수신합니다. 이는 10개 또는 10,000개 시스템을 업데이트하는 데 걸리는 시간이 상당히 비슷하고 수천 개 시스템에 대한 쿼리도 몇 초 만에 완료할 수 있음을 의미합니다. 인프라에 대한 정보를 얻는 가장 좋은 방법은 (종종 오래된) 데이터베이스에 의존하지 않고 실시간으로 정보를 쿼리하는 것입니다.
(참고: 데이터베이스는 작업 결과를 저장하는 데 매우 유용하며 Salt는 mysql, elasticsearch, syslog, carbon, redis 등 30개 이상의 작업 결과 플러그인을 지원합니다. Salt는 또한 안전한 구성 데이터를 제공하기 위해 많은 데이터 저장소와의 인터페이스도 지원합니다. 그러나 현재 시스템 구성에 따라 결정되는 경우 Salt는 개별 텍스트 메시지를 보낸 다음 노트에 답을 적어 회의실의 각 사람에게 질문하는 것과 같은 정적 데이터베이스를 봅니다.)
프리로드 금지!
솔트 미니언은 제각기 일을 한다. 솔트 마스터의 통신은 기본적으로 “이 속성을 가진 미니언인 경우, 이 인수를 사용하여 이 명령을 실행합니다”라고 하는 가벼운 명령 집합입니다. 솔트 미니언은 명령이 수신될 때 속성과 일치하는지 여부를 결정합니다. 각 솔트 미니언에는 필요한 모든 명령이 로컬에 저장되어 있으므로 명령을 실행할 수 있으며 결과는 솔트 마스터로 빠르게 돌아갑니다. 솔트 마스터는 스스로 할 수 있는 미니언을 위해 아무것도 하지 않는다.
Salt는 스케일링하기를 좋아합니다.
Salt는 고성능과 확장성을 위해 설계되었습니다. 솔트의 통신 시스템은 ZeroMQ 또는 원시 TCP를 사용하여 솔트 마스터와 미니언 사이에 지속적인 데이터 파이프를 구축하여 솔트에게 경쟁 솔루션보다 상당한 성능 이점을 제공한다. 메시지는 메시지 팩(MessagePack)을 사용하여 와이어에서 효율적으로 직렬화됩니다. 내부적으로 솔트는 Python Tornado(일부 스마트 개발자에 의해 구현됨)를 비동기 네트워킹 라이브러리로 사용하며, 솔트는 멀티스레딩과 동시성에 대한 최첨단 접근 방식을 사용하여 조정된다.
프로덕션에서 단일 마스터에 10,000개 이상의 미니언을 만나는 것은 드문 일이 아니며, 단일 솔트 마스터에 35,000명 이상의 미니언이 배치되어 있다고 알려져 있습니다! 솔트는 실제 속도와 확장성을 입증했습니다.
모든 것을 정상화하라
정상화는 Salt의 플랫폼 간 관리 기능의 핵심입니다. Linux, Windows, MacOS, FreeBSD, Solaris 또는 AIX를 대상으로 하거나 물리적 하드웨어 또는 클라우드에 있거나 컨테이너를 대상으로 하는 경우 Salt 명령 및 상태는 동일하게 실행됩니다. Salt는 각 OS, 하드웨어 유형 및 시스템 툴의 세부 정보를 추상화하여 인프라를 관리할 수 있도록 지원합니다.
모든 항목에는 수익률도 포함됩니다. Salt 명령을 실행하면 일관된 데이터 구조가 생성되어 소비와 스토리지가 간편해집니다.
모든 항목 관리
소금은 파이썬이 운영하는 거의 모든 곳에서 흐릅니다. Python을 제대로 관리할 수 없는 장치의 경우 프록시 미니언 시스템을 사용할 수 있습니다. 즉, 솔트가 관리해야 하는 유일한 요구 사항은 네트워크 프로토콜을 지원하는 것입니다(프로토콜을 직접 작성했더라도). 솔트 명령은 프록시 미니언으로 전송되며, 이 미니언은 솔트 호출을 네이티브 프로토콜로 변환한 다음 장치로 전송합니다. 장치의 반환 데이터가 구문 분석된 다음 데이터 구조에 배치되어 반환됩니다.
모든 것을 자동화합니다.
Salt의 이벤트 기반 인프라를 사용하면 초기 시스템 구성을 자동화할 수 있을 뿐만 아니라 이동 중에도 확장, 복구 및 지속적인 관리를 수행할 수 있습니다. Salt 사용자는 복잡한 분산 네트워크 애플리케이션 및 데이터베이스, 사용자 지정 애플리케이션, 파일, 사용자 계정, 표준 패키지, 클라우드 리소스 등의 배포 및 유지보수를 자동화합니다.
프로그래밍 옵션
프로그래밍 언어를 배우지 않고도 솔트 기능을 모두 사용할 수 있습니다. Salt의 원격 실행 기능은 CLI 명령이며, State 시스템은 YAML을 사용하여 원하는 시스템 구성을 설명합니다.
“infrastructure as code” 접근 방식을 사용할 수 있습니다. Salt에는 필수적이고 선언적인 실행 기능이 있는 강력한 필수 시스템을 비롯하여 이를 지원하는 많은 도구가 있습니다. Salt는 인프라를 설명하기 위해 Python 또는 Ruby 코드를 작성할 필요가 없도록 합니다.
모듈식 시스템을 통한 확장성
일부 관리 도구는 외부 스크립트를 실행할 수 있기 때문에 확장 가능한 것으로 간주합니다. 솔트에서는 모든 것이 확장 가능합니다. 다음 절에서 알게 되겠지만, 기본적인 통신 프로토콜도 상호 호환이 가능합니다.
솔트는 20개 이상의 확장 가능한 서브시스템을 가지고 있습니다. 즉, 솔트는 그것을 할 수 있다면, 여러분은 솔트가 어떻게 수행되는지 사용자 정의할 수 있습니다.
솔트는 새로운 기술을 신속하게 채택하고 새로운 애플리케이션을 개발하면서 관리할 수 있으며, 인프라를 관리하는 가장 좋은 방법에 대해 다른 사람의 결정에 얽매이지 않을 것입니다.
플러그인
다음 섹션에서는 솔트 플러그인과 솔트 접근 방식에 매우 중요한 이유에 대해 알아보겠습니다.
출처 : https://docs.saltproject.io/en/getstarted/system/index.html