분류 전체보기 594

파이썬 싱글톤 패턴 (Singleton pattern in python)

singleton pattern in python 싱글턴 패턴: 인스턴스를 하나만 생성하여 불필요한 메모리 낭비를 방지하고 해당 클래스의 인스턴스를 바로 호출 할 수 있게 하는 패턴. 한번에 아주 많은 요청을 처리해야하는데 매번 클라이언트를 호출해야 할 일이 있어 처음에는 전역변수를 사용하였다가 싱글톤 패턴을 사용하는 김에 정리해둔다. 클래스로 직접 구현하거나 데코레이터로 구현이 가능하다. 각 방법과 장단점을 소개 # 예시 BaseClient - 공통으로 사용 class BaseClient: @classmethod def class_call(cls): return {'result': True} def call(self): return {'result': True}1. deco..

카테고리 없음 2020.12.30

도커 권한문제 해결하기: "Got permission denied while trying to connect to the Docker daemon socket"

Got permission denied issue in linux linux에서 root 권한이 아닌 상태로 docker를 실행하면 권한 문제가 발생할 수 있다. [linux@localhost ]$ docker ps Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.40/containers/json: dial unix /var/run/docker.sock: connect: permi ssion denied이런 경우 docker group에 해당 유저를 추가해주어야한다. 보통은 docker gro..

카테고리 없음 2020.12.28

쿠버네티스 쉽게 디버깅하기: kuberctl alpha debug for kubernetes debugging

kubectl alpha debug command Kubecon Europe 2020 세션에서 k8s new feature 설명을 듣다가 괜찮은 alpha 기능이 있어서 정리해본다. kubernetes를 쓰면서 어렵다고 느낀 점 중 하나는 디버깅이다. logs나 describe pod로 해당 pod의 상태/로그를 확인할 수 있고 exec로 pod에 실제 명령어를 실행시켜볼 수 있지만 어디까지나 해당 pod이 running중일 때의 얘기이고, pod 자체가 잘 뜨지 않거나 exec 명령어를 사용하기 힘든 상황일 경우에는 디버깅이 정말 어렵다. shell이나 디버깅 툴이 없는 컨테이너일 경우에도 마찬가지이다. kubectl alpha debug 기능은 이럴 경우 pod 안에 디버깅에 필요한 툴들을 포함시킨 ..

카테고리 없음 2020.12.27

왜 도커를 사용해야할까? (why docker and container is arised?)

why docker and container aws immersion day에서 들은 강의를 정리한 내용. 왜 컨테이너 기술이 생겨났을까? 1. 큰 변화의 흐름 아키텍쳐의 변화 컨테이너는 변화의 흐름이 이어져서 발생한 기술 글로벌화, 디지털화 민접하고 유연한 아키텍쳐의 중요성 등장 그래서 등장하게 된 마이크로 서비스 아키텍처 운영 모델의 변화 마이크로 서비스 아키텍쳐로 여러 컴포넌트를 운영하게 됨 비즈니스 로직에 집중하고 운영 부담은 managed service로 (AWS, GCP) 소프트웨어 딜리버리 방식의 변화 개발, 릴리즈 사이클이 아주 짧아짐 자동화, 툴 표준화 수작업보다 코드 레벨로 infra structure를 관리 결국 Container는 이런 모던 애플리케이션으로 가는 좋은 방법 2. 새로..

카테고리 없음 2020.12.26

Kubernetes CRD (Custom Resource Definition)

Kubernetes CRD (Custom Resource Definition) kubernetes api에 자체 리소스를 추가할 수 있음. CRD를 통해 CLI를 지원하고 persistent storage를 제공하는 CRUD API가 제공됨. object 모델을 만들고 원하는만큼 리소스를 생성/삭제/사용 가능하다. 뿐만 아니라 이를 감시하고 컨트롤하는 컨트롤러를 가질수도 있다. (ArgoCD가 이런 방식으로 작동한다) Example superhero.yaml로 SuperHero CRD를 만들어보자. apiVersion: apiextensions.k8s.io/v1beta1 kind: CustomResourceDefinition metadata: # spec과 일치해야됨. (.) name: superhero..

backend 2020.12.25

리눅스 텍스트 프로세싱: sort, sed 사용법

20. Text Processing cat sort uniq cut, paste, join comm, diff, patch tr sed, aspell sort 다양한 옵션이 있음 -f: ignore case -n: numeric sort -r: reverse -k: key. 아래에서 더 자세히 설명 -o: output file -t: field seporator. default는 space나 tab du -s /usr/share/* | sort -nr | headkey를 사용하는 법 sort는 tabular data 형태로 작동한다. 아래 예시는 /usr/bin 디렉토리의 파일을 크기순으로 정렬 후 10개만 보여줌. 각각의 열은 필드처럼 작동하여 이 필드를 key로 사용할 수 있다. 아래 예제에서는 5번..

backend/ubuntu 2020.12.22

리눅스 아카이빙, 압축 (Linux archiving): gzip, tar ...

18. Archiving and backup gzip, bzip2, tar, zip, rsync Compressing files 압축은 데이터의 과잉(redundancy)를 줄이는 것. lossless: 데이터를 원본 그대로 압축하는것 lossy: 데이터를 제거하여 압축하는것 (JPEG, MP3 등) GZIP root@3c28bc830cb6:~# ls -l foo.txt -rw-r--r-- 1 root root 3680 Dec 12 03:37 foo.txt root@3c28bc830cb6:~# gzip foo.txt root@3c28bc830cb6:~# ls -l foo.* -rw-r--r-- 1 root root 821 Dec 12 03:37 foo.txt.gz root@3c28bc830cb6:~# l..

backend 2020.12.21

리눅스 파일 검색: locate, find 기본 사용법, 이것만 알면 쉽다

17. Searching for files locate database를 바탕으로 주어진 substring과 맞는 파일을 탐색. updatedb라는 프로그램이 정기적으로 cron job으로 파일 데이터베이스를 업데이트한다. find locate가 파일을 이름으로만 찾았다면 find 프로그램은 특정 디렉토리에서 다양한 옵션과 특성으로 파일을 찾을 수 있다. find ~ # wordcount find ~ | wc -l Options (Test) find에는 다양한 옵션 (test라고 부름)이 존재한다. 대표적인 옵션은 -type. # directory만 찾기 find ~ -type d | wc -l # file 찾기 find ~ -type f | wc -l # size option find ~ -type f..

backend 2020.12.20