일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 대규모 시스템 설계
- intellij ide
- Intellij
- Buffered channel
- Kubernetes
- System Design
- AWS
- 윈도우키보드
- 컴포지트패턴
- elasticsearch
- Golines
- 오블완
- 사설 ip
- Infra
- GoF
- 티스토리챌린지
- go
- gitops
- 배포 파이프라인
- UnBuffered channel
- goland
- notification system
- GoF 디자인패턴
- 배포 프로세스
- http 413
- golang
- 디자인패턴
- body size
- apollo router
- Logrus
- Today
- Total
목록Information Technology (303)
Fall in IT.
안녕하세요. 오늘은 자바스크립트 개발을 하다보면 보게되는 파일인 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..
안녕하세요. 오늘은 immer 라이브러리를 사용하여 쉽게 데이터의 불변성을 유지하는 방법에 대해서 알아보겠습니다. 데이터 불변성의 중요성 리액트 컴포넌트에서 상태를 업데이트할때 불변성을 지키는 것은 매우 중요하다. 리액트에서는 React.memo를 사용했을때 props가 바뀌었는지 혹은 바뀌지 않았는지를 알아내서 리렌더링 성능을 최적화해줄수있다. 불병성이 지켜지지 않는다면 React.memo와 같은 최적화는 불가능하다 immer가 꼭 필요한가? 반드시 필요하진 않다. 전개 연산자와 배열의 내장함수를 사용하면 쉽게 새로운 값을 만들 수 있다. 하지만 객체 구조가 깊어질수록 불변성을 유지하면서 업데이트하는것은 힘들어진다. 컴포넌트의 상태 업데이트가 까다로울때 immer 라이브러리를 사용하면 좋다. // 사용..