목록분류 전체보기 (142)
Connecting
Go 언어란? 2019년 구글이 개발한 프로그래밍 언어로써, GC (garbage collection)와 병행성 (concurrent)을 잘 지원하는 컴파일 언어입니다. 로버트 그리즈머, 롭 파이크, 케네스 톰슨이 C++의 복잡성이 싫어서 개발되었습니다. 현재도 어떠한 패키지에 무엇을 포함할지는 이 세 사람이 만장일치로 합의해야 이루어진다고 하며, Golang 으로 불리기도 합니다. Go 언어 사용자들을 고퍼(Gopher)라고 부르며, 고퍼들을 위한 연례행사인 고퍼콘(Gophercon)이 열리고 있습니다. Go 언어 특징 Go 언어의 특징은 다음과 같습니다. 컴파일 언어이지만 컴파일러가 소스 코드를 해석하는 pass 수를 줄여서 인터프리터 언어처럼 빠르게 동작합니다. 언어의 문법이 간결하여 접근하기 쉽고..
연구실에는 docker-swarm을 이용한 7개의 VM을 사용 중에 있습니다. 여기에 ngrinder를 통해 개발 중인 프로젝트의 성능 측정을 목적으로 사용하고 있습니다. ngrinder의 자세한 설명을 보고 싶으시다면 여기 링크를 참조하세요. ngrinder를 사용하기 위해서는 agent가 controller에 연결되어 있어야 하는데 이 부분이 정상적으로 연결되지 않는 버그가 심심치 않게 발생하고 있습니다. 필자는 다음과 같은 방법으로 문제를 해결했습니다. version: '3.5' services: controller: image: ngrinder/controller restart: always ports: - "1000:80" - "16001:16001" - "12000-12009:12000-120..
Gluster FS는 분산 스토리지 시스템으로 2011년 레드헷에 인수되어 이더넷 혹은 인피니티밴드를 통해서 수백수천 개의 서버에스토리지를 단일 네트워크 파일 시스템으로 통합한다. 기존의 분산 파일 시스템 구성에 비해 간단하고 대규모 I/O 처리능력이 뛰어나고 높은 호환성으로 인해서 클라우드 인프라 구성에 많이 이용되고 있다. 특히나 메타데이터를 관리할 중앙서버가 필요 없고 Gluster FS 노드들에 데이터의 변경 이력이 실시간으로 반영되기 때문에 하나의 노드가 문제가 발생해도 다른 여러 노드에 분산 저장이 되어 있다는 점이 장점이다. 본인은 docker-swarm를 통해 클러스터링 되어있는 컨테이너 외부 볼륨 데이터를 일괄적으로 관리하기 위해 사용하였다. Prerequisites OS : Ubuntu..
나만의 홈페이지를 만들고 싶을 때, 처음부터 시작하는 방법도 존재하는 다양한 오픈소스 프로그램을 활용해서 방법도 있다. Wordpress라는 좋은 플랫폼도 존재하지만 이번 시간에서는 xpressengine을 이용해서 홈페이지를 만들고자 하는 분들에게 도움을 드리고자 한다. Xpressengine 요구사항 XE(xpressengine)는 공식 사이트에 의하면 다음과 같은 기본 요구사항이 필요하다. 본 문서는 버전 3.0 이상을 기준으로 한다. 웹서버 : Apache & Nginx PHP 7 이상 PDO PHP Extension cURL PHP Extension FileInfo PHP Extension GD PHP Extension Mbstring PHP Extension OpenSSL PHP Extensi..
Podman이 무엇인가? container의 대표주자 Docker가 필수적으로 자리 잡게 되면서 이제 서비스를 배포하는 시간이 획기적으로 단축되었으며, 작업의 효율성이 증대되었습니다. Docker는 특정 서버의 의존성이나, 운영시 발생할 수 있는 스노 플레이크 서버의 문제점을 해결할 수 있기 때문에, 배 포환겨에 혁신을 이루어냈습니다. 이를 적극적으로 활용하기 위한 대규모 클러스터링 시스템인 Docker Swarm, Kubernetes가 성공적으로 안착하였고 현재까지도 가장 인기 있는 컨테이너 플랫폼으로서 성장하고 있습니다. 하지만 Docker 데몬이 죽게되면 모든 Docker 위에서 동작하고 있는 서비스들이 중단돼 문제가 발생하게 됩니다. podman은 이런 문제점을 해결하기 위해서 나온 컨테이너 플랫..
개요 리눅스의 경우 메모리의 유휴공간을 캐시영역으로 잡아둔다. 이는 일반적인 환경에서 빠른 응답을 위한 기능이지만 과도한 메모리 사용은 서버 운영에 차질이 생길 수 있기 때문에 확인이 필요하다. 메모리 사용률의 경우 어떠한 프로세스가 동작하고 있는지에 따라 다르기 때문에 서버에서 동작하고 있는 프로세스의 메모리 점유와 상태를 꾸준히 확인하는 것이 중요하다. 일반적으로 동작중인 프로세스가 메모리를 과도하게 사용하는 경우, 메모리 누수를 의심해 보아야 하며, 이 경우에는 본 문서로는 해결할 수 없음을 알린다. 메모리 용량 확인 $ cat /proc/meminfo | grep MemTotal MemTotal: 2097152 kB 메모리 사용량순 프로세스 확인 *RSS(Resident set size) : 물리..
왜 Harbor를 도입했는가? Docker를 사용하다 보면 Docker Registry가 반드시 필요하다. 특히나 기업 혹은 본인 연구실에서는 관련 서비스를 Docker 전환이 진행하고 있는 과정에서 Private Docker Registry는 반드시 필요하다고 할 수 있다. 기존에서는 Sonatype nexus를 사용했으나 maven, npm 등 사설 레지스트리로 사용하는데 충분하지만 Docker로 사용하기 위해서는 https 사용할 수 없어 추가적인 설정이 필요했기 때문에 계속해서 사용하기 에는 적합하지 않다고 판단하였다. 사실상 Docker Hub를 사용하면 간단하게 문제를 해결할 수 있겠지만, 무료로 사용하기 위해서는 public으로 공개해야 하는 점, private로 사용할 경우 추가적인 비용을..
본 문서는 완벽한 IT 인프라 구축의 자동화를 위한 Kubernetes 책의 내용을 일부 발췌하여 작성한 글입니다. 글의 이해도를 높이기 위해서는 본 책을 구매해서 내용을 학습하는 것을 추천합니다. 책의 링크와 소스코드는 아래에 공유해드리도록 하겠습니다. 개발환경 OS : MAC OS 필수 프로그램 : Docker, minikube IDE : Visual Studio Code VCS : GIt 소스코드 필자의 글에서 자세한 내용은 전부 설명하겠지만 소스코드가 필요한 경우에는 소스코드를 다운로드하여서 실습을 진행하길 바란다. 책 소스코드 : https://github.com/ToruMakabe/Understanding-K8s 필자 소스코드 : https://git.wisoft.io/seongwon/kube..
필자의 블로그에서 Kubernetes (K8s)가 무엇인지, 기본 명령어와 사용방법에 대해서 간단하게 알아가는 시간을 가졌다. 제대로 사용하기 위해서는 master 노드와 slave 노드를 세팅하여 사용하는 게 일반적이지만 이번 시간에서는 minikube를 설치해서 하나의 머신에서 K8s의 사용법을 익히는 방법을 서술하고자 한다. 필자는 Mac OS 기반에서 진행했으며, 리눅스에서는 설치방법이 다소 다를 수 있음을 알려드립니다. 리눅스에서 사용하는 방법은 추후 설명하도록 하겠습니다. 본 설명을 따라하기 위해서는 기본적으로 Docker가 설치되어 있어야 합니다. Docker 설치방법은 본 블로그 혹은 공식 문서를 확인하시길 바랍니다. 이번 Part 1에서는 minikube가 무엇인지, 세팅하는 방법과 간단..
2020년 애플리케이션을 디플로이할 때 Docker를 활용하는 일은 당연한 일이 되어가고 있다. 본문에서는 Docker가 무엇인지 어떻게 사용하는지에 대한 설명을 다루는 것이 아닌 Docker를 활용해 데이터베이스를 초기화 방식에 대해서 알아보도록 하는 시간을 가진다. Docker에 대한 기본 지식은 필자 블로그에 설명했기 때문에 Docker가 무엇인지, 활용하는지에 대한 방법을 잘 모른다면 글을 읽어보고 오는 것을 추천한다. 환경 Docker를 사용하는 사람이라면 윈도우보다는 Linux, MacOS에서 매끄럽게 동작한다는 사실을 알고 있을 것이다. 윈도우도 예전보다 좋아지긴 MacOS 카탈리나에서 실습을 진행했음을 밝힌다. Docker 데이터베이스 SQL PostgreSQL, MySQL이든 Docker..