본문 바로가기

전체 글

(23)
[Terminal] Mac 터미널 환경 설정하기 (꾸미기) - iTerm2, oh my zsh, tmux 맥을 한번도 사용해보지 못한 사용자였지만 요즘은 맥북, 아이맥을 제공해주는 회사들(감사한 회사들!!)이 많아지고 있다. 나도 (돈이 없어) 윈두우만 사용하다가 회사에서 업무용 PC 로 아이맥을 제공받아 사용하고 있다. 내가 VS code 보다 더 많이 사용하는 Mac 터미널 환경을 위한 기록용 포스트로 누군가에겐 도움이 됐으면 좋겠다. 기본 환경 Mac 의 기본 터미널 화면이다. Mac OS 10.15 카탈리나 부터 기본 쉘이 bash 에서 zsh 로 변경되었다. 사용하기 편한 터미널 환경을 설정하기 위해 iTerm2 Oh my zsh tmux 위의 요소들을 사용하려고한다. iTerm2 Mac 의 기본 터미널을 대체할 수 있는 터미널로 다양한 커스텀 요소들을 제공하고, 화면 분할 등의 확장된 기능을 제공..
[Docker] Docker Image 사이즈 줄이기 현업에서 컨테이너 환경에서 애플리케이션을 배포하고 관리하기 위해 도커(Docker) 를 사용하고 있다. 애플리케이션과 환경을 Dockefile 에 정의하여 도커 이미지로 만들고, Dockefile 을 빌드하여 도커 이미지를 생성한다. Dockerfile 로 간단한 도커 이미지를 만들때에는 인지하지 못했지만(진작 고려했어야하는 문제이긴하다...) 도커 이미지 사이즈가 커지면서 컨테이너 배포와 빌드 속도가 느려지는 문제가 발생했다. 그래서 도커 이미지 사이즈를 줄이는 방법을 정리해서 점검해보는 방식을 사용하려고 한다. 사이즈가 작은 베이스 이미지 사용하기 도커 이미지의 베이스 이미지부터 사이즈가 작은 베이스 이미지를 사용하기 Ubuntu 크기는 188MB, Alpine 크기는 5MB (약 37배 차이) Al..
[CloudWatch] AWS 클라우드 와치 AWS 로 운영되는 서비스를 개발하고 운영할 때 CloudWatch 를 사용하게되었다. CloudWatch 의 간단한 기능에 대해 정리해보고자한다. (아주 간단함 주의) CloudWatch 란? CloudWatch 는 AWS 리소스와 애플리케이션 모니터링하는 도구다. AWS (EC2, RDS, ELB, EBS, S3) 를 사용중인 애플리케이션의 상태 확인에 쓰인다. 모니터링(Monitoring) 모니터링에는 무료와 유료 모니터링이 있다. 기본 모니터링(무료) 5분간격 수집 가능 모니터링 지표 10개 가능 5GB 데이터 수집 가능 세부 모니터링(유료) 월별로 인스턴스당 요금부과 1분간격 수집 가능 메트릭(Metric) EBS, EC2, ELB, S3 지표를 제공함 하이퍼바이저 레벨에서 CPU, Networ..
[Go/Golang] 클로저(Closure) 클로저(Closure) 함수 안에서 익명 함수를 만들 수 있고, 바깥쪽 함수에서도 함수의 변수에 접근할 수 있는 함수 반복되는 함수 단어로 헷갈린다면 코드를 보자 func appendString() func(s string) string { result := "" return func(s string) string { result += s return result } } func main() { testClosure1 := appendString() print(testClosure1("a")) //a print(testClosure1("b")) //ab testClosure2 := appendString() print(testClosure2("c")) //c print(testClosure2("d")) ..
[k8s] Kubernetes Controller (쿠버네티스 컨트롤러) - 01 많은 회사들이 이젠 k8s 로 서버를 관리하고 있을 것이라 생각한다. 나도 이제 1년정도 개발 후, k8s 환경에 서버를 배포하고있는데 모르는게 정말 많다. 배포를 관리하는 개발자 (혹은 운영자) 라면 k8s 에 배포한 파드(pod)를 Lens 프로그램으로 이것저것 살펴보게 된다. 이때 나눠진 메뉴들은 내 직감(?) 은 알고있는데 난 그게 참 설명하기가 어렵다(이걸 모른다고 하는건가??;;) 하나하나 차근차근 정리하다보면 내 것이 될 것이라 생각한다. 오늘은 쿠버네티스 컨트롤러에 대해 정리하려고 한다. 컨트롤러란? k8s 클러스터 내부에서 파드를 설정하고 배포하는 방법을 정의함 컨트롤러는 런타임 요구사항에 따라서 파드를 그룹화하고 파드의 복제, 파드의 시작순서를 정의할 수 있음 한 마디로 파드 배포 설정..
[Go/Golang] Go 언어는 무엇이고 왜 쓰고 언제쓸까? 최근에 Go 언어로 개발을 하면서 한 번은 정리해야겠다고 생각했다. Go 언어는 무엇이고, 언제 쓰면 좋을까? 개발을 하면서 이런 고민을 한번쯤은 해봤을 거라고 생각한다. Go 는 무엇인가? 2009년 구글에서 일하는 로버트 그리즈머, 롭 파이크, 켄 톰프슨이 개발한 프로그래밍 언어이다. 구문이 C 와 비슷하지만 (개인적으로 나는 세미콜론이 안붙어서 Python 과 비슷하다고 생각했다) Memory Safety, Garbage Collection, Structural Type System, Communicating Sequential Processes(CSP) 스타일의 병행성(Concurrency) 를 제공한다. 간단하게 하나씩 살펴보면 다음과 같다. (개별 특징에 대한 자세한 글을 포스팅 해도 좋을 것..
[Spring Boot] 스프링 클라우드 (Spring Cloud) (+ RabbitMQ 연결) 업무에서 RabbitMQ 를 사용하게 되면서 Spring Boot에도 RabbitMQ 를 적용해보고싶었다. 적용하면서 사용한 스프링 클라우드에 대해 정리하고 작성한 코드를 공유하려고 한다. 스프링 클라우드란? 개발자가 분산 시스템에서 사용되는 패턴을 빠르게 구축할 수 있도록 도와주는 도구이다. (라이브러리들의 집합) MSA(MicroService Architecture) 를 지향하게 되면서 이를 위한 환경을 빠르게 제공해준다. 스프링 부트는 뭐든 빨리 개발할 수 있는 편리한 환경을 제공해주는 것 같다. 스프링 클라우드가 제공하는 기능은 다음과 같다. 분산/버전 지정 구성(Distributed/versioned configuration) 서비스 등록 및 발견(Service registration and d..
[정보보안] CVE (Common Vulnerabilities & Exposures) 취약점 표기 방법 중 하나인 CVE(Common Vulnerabilities and Exposures) 에 대해 간단하게 정리했다. CVE란? 공개적으로 알려진 소프트웨어 보안취약점을 가리키는 고유표기 CVE 체계 이전에는 동일한 취약성에 대해 해커와 보안업체간 다르게 사용해온 명칭을 표준화했다. 관리하는 곳 비영리 연구개발기관인 MITRE 가 처음 운영을 시작함 (MITRE는 미국 연방정부의 후원을 받음) 미국국립표준기술연구소(NIST) 가 국가 취약성 데이터베이스를 만들어 협력하기 시작함 구성 체계 CVE-2020-1234 CVE - {{취약점이 발견된 연도}} - {{취약점 번호}} 로 구성된다. CVE 리스트는 아래의 Github 에서 확인가능하다. github.com/CVEProject/cvel..