일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
- System Design
- Infra
- Lambda@Edge
- gitops
- AWS
- notification system
- Golines
- Logrus
- GoF 디자인패턴
- 시스템 설계
- golang
- AWS Infra
- Kubernetes
- Helm V3
- GoF
- goroutine
- Bastion Server
- 클래스 관계
- 컴포지트패턴
- image resizing
- UnBuffered channel
- Buffered channel
- Live Template
- go
- tenneling
- 디자인패턴
- 알림 시스템
- 대규모 시스템 설계
- argocd
- 컴포짓패턴
- Today
- Total
목록Information Technology (294)
Fall in IT.
안녕하세요. 오늘은 JavaScript에서 유용하게 사용되는 null 병합 연산자(nullish coalescing operator)에 대하여 알아보겠습니다. null 병합 연산자(nullish coalescing operator)란? 짧은 문법으로 여러 피연산자 중 값이 확정되어 있는 변수를 쉽게 찾을 수 있도록 도와주는 연산자이다. 예제 1 변수 a와 b가 있을때 a가 null이나 undefined가 아니면 a를 그 외의 경우는 b를 대입하는 경우를 생각해보자 // null 병합 연산자 사용 안했을경우 let result = (a !== null && a!== undefined) ? a : b // or let result = a ? a : b // null 병합 연산자 사용한 경우 let resul..
안녕하세요. 오늘은 자바스크립트 개발을 하다보면 보게되는 파일인 package-lock.json, yarn.lock 파일에 대해서 알아보겠습니다. package.json 파일은 무엇인가? package.json 파일은 프로젝트에서 사용된 패키지 의존성 관리를 도와준다. 자바스크립트에서는 패키지 매니저로 npm 또는 yarn을 사용한다. (패키지 매니저는 자바스크립트 프로젝트에서 특정 패키지를 설치하거나 삭제하는데 사용되는 도구를 말한다.) 이때, 설치된 패키지들의 종류와 버전이 package.json 파일에 적혀서 관리된다. 그렇다면 package-lock.json 파일은 무엇인가? 패키지 설치시점과 상관없이 모두 동일한 패키지를 설치할 수 있도록 도와준다. (이를 패키지 잠금 기능이라고 부른다) pac..
개요 AWS CDK란? AWS Cloud Development Kit으로 프로그래밍 언어를 사용하여 클라우드 애플리케이션 리소스를 모델링 및 프로비저닝 해주는 도구 기존의 yaml, json 형태의 선언적 접근 방식보다 더 개발자에게 친화적인 언어를 사용해서 작성할 수 있다 기존 인프라 구축 방법 Level 1 AWS 관리 콘솔에서 리소스 만들기 Level 2 코드 형태의 명령형 인프라 (aws-cli, aws-sdk 사용하여 deploy script 작성) 문제 발생시 재시도하기 어려움, 동시에 여러명이 스크립트를 실행할 경우 에러 발생 Level 3 코드로 선언하여 인프라 관리 yaml 또는 json 형태의 선억적 접근 방식 사용 Terraform, AWS CloudFormation (AWS 만 지원..
안녕하세요, 오늘은 Go 함수를 사용할때 매개변수로 포인터형 변수를 넘겨줄때와 일반적인 형태의 값을 넘겨줄때의 차이점에 대해서 알아보겠습니다. go의 함수를 사용할때 매개변수로 포인터형 매개변수를 사용하느냐 아니면 일반 자료형을 사용하느냐에 따라서 동작 방식이 달라진다. 포인터형 매개변수를 사용할 경우 값이 복사되지 않고 현재 인스턴스의 주소가 전달되기 때문에 값의 변경이 발생한다. 일반 자료형을 사용할 경우 값이 복사되어 전달되기 때문에 전달된 값의 변경은 일어나지 않는다. 상황에 따라 잘 구분하여 사용해야한다. 샘플 코드 결과 모두 즐거운 코딩 하세요~
helm 쿠버네티스 패키지 매니저 node.js의 npm과 같은 쿠버네티스용 패키지 매니지먼트 도구 헬름을 통한 쿠버네티스 어플리케이션 관리 헬름 차트는 복잡한 쿠버네티스 애플리케이션도 편리하게 정의하여 설치하거나 업그레이드 할 수 있다. 헬름 특징 복잡성 관리 쉬운 업데이트 간단한 공유 롤백 헬름 허브에 공개된 수많은 헬름 저장소의 차트들을 활용하여 쿠버네티스용 소프트웨어를 공유하고 사용할 수 있다. helm의 일반적인 개념 일반적으로 하나의 소프트웨어를 쿠버네티스에 배포하려면 간단하게 컨테이너만을 배포해서는 사용하기 어려운 경우가 많다. 외부로 IP를 노출시키기 위해서 쿠버네티스 서비스를 배포해야하고, 쿠버네티스 pod를 관리할 deployment가 필요하며, 디스크 볼륨과 기타 정책 등 부가적인 부..
안녕하세요. 오늘은 Kubernetes 클러스터 배포 도구인 Argo CD에 대해서 간단하게 알아보겠습니다. Argo CD Argo CD는 GitOps 스타일의 배포를 지원하는 CD 도구이다 Git 저장소의 내용과 쿠버네티스 클러스터를 동기화해주는 역할을 하는 에이전트이다 쿠버네티스 클러스터 내부에서 Pod 형태로 배포가 된다. 특징 애플리케이션 정의, 구성 및 환경은 선언적이어야하며 버전을 제어해야한다. 애플리케이션 배포 및 수명주기 관리는 자동화되고 확인하기 쉽다. 작동 원리 Argo CD는 원하는 애플리케이션 상태를 정의하기위한 소스로 Git repository를 사용하는 GitOps 패턴을 따른다. Kubernetes 매니페스트는 여러 방법으로 지정할 수 있다. (필자는 helm 차트를 사용하였습..
안녕하세요. 오늘은 vscode에서 자동완성 단축키 설정방법에 대해서 알아보겠습니다. 맥북을 사용하는 경우 커맨드 + 스페이스, 쉬프트 + 스페이스 단축키는 시스템 단축키로 사용되고 있기 때문에 단축키를 변경하여 사용하는 것이 좋습니다. vscode 자동완성 단축키 설정방법 키보드 단축키 환경설정 탭으로 들어갑니다. Code -> Preferences -> Keyboard Shortcuts (단축키 cmd + K, cmd + S로도 진입가능) suggest를 검색 합니다. Trigger Suggest의 Keybinding에 원하는 단축키로 변경해줍니다. 필자는 option(alt) + space 단축키를 사용하였습니다. 완료! 모두 즐거운 코딩하세요~
안녕하세요. 오늘은 맥에서 SSH 공개키를 만드는 방법에 대해서 간단하게 알아보도록 하겠습니다. 많은 Git 서버들은 SSH 공개키로 인증을 하고 있습니다. 사용자의 SSH 키는 기본적으로 사용자의 ~/.ssh 디렉터리에 저장됩니다. 루트 경로에 .ssh 이름의 디렉터리가 존재하지 않을 경우 키를 생성해야합니다. SSH 공개키 만드는 방법 터미널에서 아래 명령어를 입력한다. $ ssh-keygen (Linux나 Mac에는 ssh 키를 생성하는 유틸리티가 기본으로 설치되어 있습니다) 이때 저장될 경로와 암호를 요구하는데 엔터를 쳐서 넘어갑니다. 키를 저장하고 싶은 경로를 입력하고 키의 암호를 입력할 수 있다. 그냥 엔터를 입력할 경우 키는 ~/.ssh 디렉터리 하위에 키가 생성되며 키를 사용할때 암호를 묻..
Context API란? Context API는 리액트 프로젝트에서 전역적으로 사용할 데이터가 있을때 유용한 기술이다 예를 들면, 사용자 로그인 정보, 애플리케이션 환경 설정, 테마 등 Context API 사용법 익히기 color.tsx - Context API 만들기 const ColorContext = createContext({ state: { color: 'black', subColor: 'tomato' }, actions: { setColor: (color: string) => {}, setSubColor: (color: string) => {}, } }) export default ColorContext interface ColorProviderIProps { children: React.R..
Docker란 Docker는 컨테이너 가상화 환경에서 애플리케이션을 관리하고 실행하기 위한 오픈소스 플랫폼이다 리눅스 위에서 동작하는것이 특징이며 Go 언어로 만들어졌다. Docker의 특징 이식성 Docker는 기본적으로 애플리케이션이 동작하는 모든 인프라 환경을 컨테이너로 관리한다 애플리케이션 실행에 필수적인 모든 파일 및 디렉터리를 통째로 컨테이너에 담는다 그리고 이 컨테이너의 기반이 되는 Docker 이미지를 Docker Hub에 공유한다 이런 Docker의 특성 때문에 개발 환경에서는 동작하지만 운영 환경에서는 동작하지 않는 리스크를 줄일 수 있다. 상호 운용성 여러 조직이나 시스템과 연계하여 사용할 수 있는 소프트웨어의 특성을 상호 운용성이라고 말한다 Amazon EC2 Container Se..