본문 바로가기

Development Experience

(85)
Docker 관련 글 모음 1. Docker 컨테이너 자세히 뜯어보기 컨테이너 자세히 뜯어보기 Container 내부가 궁금해서 뜯어보았습니다. | 컨테이너의 시대 최근 쿠버네티스에 대한 관심이 높아지면서 컨테이너를 사용하는 기업들이 점차 늘어나고 있습니다. 컨테이너는 독립적인 공간을 brunch.co.kr Docker 관련 검색을 할 때 Docker가 Linux의 namespace, cgroup 기능을 이용하여 컨테이너를 관리한다는 글을 종종 보았었다. 하지만 Linux 내부 구조를 잘 아는 것도 아니고 Docker 입문자로서 기능 숙지에 중점을 두고 공부했었기에 namespace, cgroup을 어떻게 활용한다는 건지는 잘 몰랐었다. Docker 기본 기능에 대한 숙지가 끝난 지금, Docker의 내부 구조에 대해 좀 더 파보..
네트워크 글 모음 1. gRPC 배경부터 활용까지 gRPC 배경부터 활용까지 1. 등장 배경 1.1 Server-Client Model PC(Personal Computer)의 개념이 없던 시절, 프로그램은 하나의 메인 프레임에서 동작하는 Monolothic 구조로 설계되었다. 이때까지만 해도 모든 기능들이 한 공간에서 구.. incredible-larva.tistory.com 네트워크의 변천사를 쉽게 설명해주는 글
Rocky OS selinux 무한 재부팅 # 오류의 발견 2일 연차 사용으로 9일을 쉬었던 기적의 설 연휴가 지나고 월요일 출근을 맞이하였다. 회사에 적응하기 위해 잠시 멍을 때리고 있었는데 선임님이 나를 부르셨다. 요지는 지난 주 회사 전기가 나가는 상황이 발생하였고, 왜인지 모르겠지만 그 이후부터 인프라 담당 서버께서 무한 재부팅을 하고 계시니 이를 해결해보라는 퀘스트였다. 우리 팀은 새로운 프로젝트를 진행하기 위해 공용 인프라 서버를 가상으로 띄워둔 상태였다. 가상화 소프트웨어는 VMWare ESXi, OS는 Rocky OS 8.5를 사용하고 있고 이 위에 Docker로 MongoDB, MariaDB, Redis, RabbitMQ를 서비스 중이었다. putty 접속이 되지 않았기 때문에 VMWare의 터미널로 인프라 서버에 접속하니 아래와..
GCP(Google Cloud Platform)와 MLOps ※ 이 글은 "MLOps: Big Picture in GCP"를 참고하여 작성되었습니다. GCP(Google Cloud Platform)이란 아마존의 AWS, MS의 Azure와 같은 퍼플릭 클라우드 서비스이다. GCP에서는 단순히 저장 공간과 연산 능력을 제공하는 서비스 이외에도 Machine Learning을 위한 MLOps 인프라도 있는데, MLOps의 각 영역에 특화된 여러 개의 서비스는 다음과 같다. 1. GKE(Google Kubernetes Engine) Kubernetes를 한번 wrapping하여 사용자가 Kubernetes의 세세한 설정(how it works)을 신경쓰지 않고도 Kubernetes의 전반적인 동작(what it does)을 제어하는 서비스이다. 2. Kubeflow G..
DVR vs NVR DVR (Digital Video Recorder) 1. 특징 - 동축 BNC 케이블을 사용한다. - 아날로그 신호를 수신하고, 이 수신된 데이터를 AD 레코더를 이용해 비디오 데이터로 변환한다. 2. 장점 - 값이 싸다. - 아날로그 카메라와 연결하여 사용한다. 이 덕분에 비용이 많이 저렴해진다. 3. 단점 - NVR 시스템에 비해 유연성이 떨어진다. - 동축 케이블은 카메라에 전원을 공급하지 않기 때문에 카메라에 별도로 전원을 공급해야 한다. - 동축 케이블은 오디오를 지원하지 않기 때문에 오디오를 전송할 별도 케이블을 연결해야 한다. (카메라 DVR) NVR (Network Video Recorder) 1. 특징 - IP 카메라와 연결할 수 있다. - 비디오, 오디오 데이터를 수신한다. 2. 장점 ..
C# log4net을 XML 대신 코드로 사용하기 Java에 log4j 라는 오픈소스 로깅 라이브러리가 있듯이 C#에는 log4net 이라는 라이브러리가 있다. log4net의 일반적인 사용법은 XML 파일에 log4net 관련 설정을 한 후, 이 파일을 log4net의 XmlConfigurator.Configure() 함수로 등록하면 된다. 나는 지금까지 이 작업을 App.xaml.cs 파일에서 수행해왔다. 하지만 세상에 편한 일만 있을 순 없는 법.. 내가 회사에서 만들고 있는 비디오 스트리밍 프로그램은 하나의 메인 프로그램이 있고, 1 ~ 25 개의 카메라 영상을 스트리밍 해주는 각각의 스트리밍 프로그램이 있다. 즉, 프로젝트는 하나인데 프로세스는 여러개가 실행되는 구조이고 각각은 자신들만의 로그 파일을 가지고 있어야 했다. 문제는 여기서 발생한다..
SonarQube 라이센스 구입기 회사에서 사용할 SonarQube 라이센스를 구입하는 과정을 기록한 글입니다. 우선, SonarQube의 라이센스 정책은 다음과 같습니다. (참고: https://www.sonarqube.org/downloads/) 각 Edition 별로 지원하는 언어와 기능이 다르고, Community 버전의 경우 무료로 다운로드 가능합니다. 저희 회사는 Community Edition에서 C#을 지원하지만, C++는 Develop Edition에서만 지원하기 때문에 Developer Edition License를 구입해야 했습니다. 라이센스를 구매하기 이전에 Trial 버전을 사용해보고자 위 화면에서 "Request a Free Trial"을 클릭 후 간단한 인적 사항을 기록했습니다. 위의 인적 사항을 입력한다고 바..
Gitlab의 용량이 Full이 되었을 때 해결법 이 글은 내가 관리하던 회사 Gitlab의 용량이 Full이 된 후 겪게 된 삽질을 다룬다. 때는 지난주 금요일, 함께 일하는 동료가 나에게 Gitlab 접속이 되지 않는다며 확인해달라고 한 게 시작이었다. Gitlab 웹 페이지에 접속을 시도하니 정말 5XX 에러가 뜨고 있었다. Putty로 Gitlab이 운영되고 있는 Ubuntu 서버에 접속해서 이것저것 확인해보니 디스크 용량의 Usage가 100%를 치고있던 것이었다…! 더욱이 이 하드 디스크의 용량은 고작 500GB밖에 되지 않았다. 지금까지 500GB 짜리 하나 믿고 Gitlab을 쓰고 있었다니… 곧바로 회사의 남는 하드 디스크를 공수하기 시작했다. 다행히 4TB짜리 놀고 있는 하드 디스크가 있어서 곧바로 Gitlab, 더 나아가서는 이 Git..