일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- GoF
- Bastion Server
- notification system
- Logrus
- tenneling
- goroutine
- Infra
- image resizing
- golang
- 대규모 시스템 설계
- Live Template
- GoF 디자인패턴
- 컴포짓패턴
- AWS
- AWS Infra
- Kubernetes
- 알림 시스템
- UnBuffered channel
- Golines
- Helm V3
- 클래스 관계
- 디자인패턴
- Buffered channel
- gitops
- System Design
- 시스템 설계
- argocd
- go
- Lambda@Edge
- 컴포지트패턴
- Today
- Total
목록Information Technology (294)
Fall in IT.
안녕하세요. 오늘은 Go언어에서 Golines라는 툴을 사용해서 보기좋게 포맷팅하는 방법을 알아보겠습니다. Go언어는 개발자의 생산성 향상에 초점을 두고 설계되어 기본적으로 gofmt이라는 소스코드의 스타일을 자동으로 포맷팅해주는 툴을 제공합니다. 다만, 아쉬운점은 소스코드 한 라인의 최대길이에 따라서 자동으로 줄바꿈을 해주는 기능이 없다는 것.. 그래서 찾게 된 툴이 golines입니다. Golines란? golines는 Go 소스코드에서 긴 줄을 줄이는 포맷터이다. 적용방법 Goliens 툴 설치하기 $ go install github.com/segmentio/golines@latest Goland > Preferences 클릭 (cmd + , 키로 접근 가능) 좌측에 도구 > 파일 검사기를 선택합니..
안녕하세요. 오늘은 GoLand(IntelliJ) IDE에서 라이브 템플릿을 사용하는 방법에 대해서 알아보겠습니다. 라이브템플릿이란? IntelliJ IDE에서 제공하는 기능으로, 테스트코드와 같이 반복적으로 작성되는 코드를 템플릿 형태로 만들어두고 단축키를 사용해서 쉽게 불러오는 기능을 말한다. 라이브템플릿 적용방법 아래에서는 GoLand IDE(IntelliJ에서 제공하는 IDE)를 사용하고 Go 언어로 개발할때 사용할 Repository Test Template을 만들어보도록 하겠습니다. 1. cmd + , 단축키를 누른다. 2. 좌측 에디터 선택 -> 라이브 템플릿 선택 -> 우측에 Go를 선택하고 +버튼 선택 3. 템플릿 텍스트 입력 type $Template$RepositoryTestSuite..
안녕하세요. 오늘은 Kubernetes를 말할때 빠지지않고 등장하는 Helm에 대해서 알아보도록 하겠습니다. Helm이란? Kubernetes 패키지 매니저 도구 다양한 애플리케이션(tomcat, fluentd 등)을 Kubernetes에 쉽게 배포하도록 도와줌 Kubernetes에 애플리케이션을 쉽게 관리(배포, 업데이트) 하도록 도와주는 도구 Helm은 kubectl과 같이 Kubernetes master 노드의 API Server를 통해 애플리케이션을 배포하고 관리하는 일을 수행한다. Helm V2까지는 Kubernetes 환경에 Helm Client(agent)와 연동될 Tiller Server를 설치해야했으나, V3 부터는 Kubernetes API 직접 통신하는 방식으로 변경되었다. Helm이..
안녕하세요. 오늘은 지난번에 구축한 인프라를 바탕으로 Private Subnet 영역을 새롭게 추가하고 2개의 가용영역에 RDS 인스턴스를 추가해 다중 AZ 배포를 통해 고가용성을 달성해보겠습니다. RDS(Amazon Relational Database Service)란? RDS는 AWS에서 제공하는 관계형 데이터베이스 서비스이다. 클라우드에서 간편하게 데이터베이스를 설치, 운영 및 확장을 할 수 있는 관리형 서비스 모음입니다. 인프라 구성 인프라 구성은 아래와 같다. (이전에 실습한 인프라를 바탕으로 시작합니다. 해당 내용은 여기서 확인 가능합니다.) 가용영역 a와 b에 RDS 인스턴스를 생성할 서브넷 영역을 생성한다. 즉, a영역에 10.0.100.0/24, b영역에 10.0.200.0/24의 서브넷..
안녕하세요. 오늘은 TLS와 HTTPS에 대해 간단하게 알아보겠습니다. TLS란? TLS (Transport Layer Security)는 인터넷에서 정보를 암호화해서 송수신하는 프로토콜 넷스케이프 커뮤니케이션스사가 개발한 SSL(Secure Sockets Layer)에 기반한 기술로 국제 인터넷 표준으로 인정받은 프로콜이다. 표준에 명시된 정식 명칭은 TLS이지만 아직도 SSL이라는 용어가 많이 사용되고 있다. 흔히 SSL이라고 불리는 용어들은 대부분 TLS라고 보면 된다. (SSL은 TLS의 과거 명칭이다. SSL 3.0이 TLS의 1.0 기반이 되었다.) TLS를 사용해 암호화된 연결을 하는 HTTP를 HTTPS라고 한다. 보안된 웹 사이트 주소는 HTTPS로 시작하고 기본 포트는 443번을 사용한..
안녕하세요. 오늘은 아주 간단하게 AWS 인프라를 구성해보고 로컬 컴퓨터에서 SSH tenneling을 사용해서 Private Subnet 영역에 위치한 서버 컴퓨터(EC2 인스턴스)에 접속하는 것까지 실습해보도록 하겠습니다. 대상 AWS 인프라 구성에 어려움을 겪고 계신 분 VPC, Subnet은 default로만 사용해보신분 기본적인 네트워크 구성을 알고 싶으신 분 목표 조금은(?) 보안을 신경쓰면서 아래와 같은 아주 간단한 인프라를 구성해보자 목차 사용한 AWS 리소스와 간단 개념 인프라 구성에 대한 설명 실습 사용한 AWS 리스소와 간단 개념 사용한 리소스 VPC (Virtual Pricate Cloud) Subnet IGW (Internet Gateway) NAT EC2 AZ (Availabil..
안녕하세요. 오늘은 Github 계정 엑세스 토큰 생성 방법에 대해서 정리해보겠습니다. Github 계정 엑세스 토큰은 언제 사용할까? git을 사용해서 push/clone와 같은 작업을 할때 필요하다. 예를들면, CI & CD 파이프라인을 구축하는데 스크립트에서 특정 저장소를 clone받거나 push하고자 하는 일이 생길 수 있다. 확인 방법 Github 우측 상단에 프로필을 선택한 후, 아래쪽에 Settings를 선택한다. 좌측 하단에 Developer settings를 선택한다. 좌측 메뉴에서 Personal access tokens -> Tokens를 차례로 선택한다. 우측에 Generate new token을 클릭한다. 원하는 옵션을 선택하고 토큰을 생성한다. 모두 즐거운 코딩하세요~
안녕하세요. 오늘은 AWS의 S3, CloudFront, Lambda, Lambda@Edge 기술을 활용하여 이미지 리사이징(작게..)하는 방법에 대해서 알아보도록 하겠습니다. (아래 내용에서는 이미지 리사이징을 위한 코드에 대한 설명은 하지 않고 AWS 서비스를 활용하는 방법을 중심으로 설명합니다.) 목적 다양한 사이즈의 이미지를 클라이언트가 사용할 수 있도록 한다. (썸네일 이미지에 큰 사이지의 이미지를 사용할 필요는 없다. 상황에 따라 그에 맞는 이미지를 사용할 수 있도록 한다.) 요구사항 하나의 이미지를 사용하여 다양한 사이즈의 이미지를 만들어낸다. querystring을 사용하여 이미지 사이즈를 다양하게 요청이 가능하다. s 사이즈 설정 s=100x100 (width, height) q 비율 설..
안녕하세요. 오늘은 GraphQL 보안과 성능 개선 방법에 대해서 알아보겠습니다. GraphQL 보안과 성능 개선 방법 타임아웃 설정 데이터 개수 제한 쿼리 깊이 제한 쿼리 복잡도 제한 Filed Collection GraphQL로 서버를 만들경우 클라이언트쪽 구현에 더 많은 자유도와 유연성을 부여할 수 있습니다. 여러개의 데이터를 조회할때도 한번의 쿼리로 조회(UnderFetching 해결)가 가능하고, 원하는 필드만 조회할 수 있습니다. (OverFetching 해결) 그러나, 자유도가 높은 만큼 한번의 쿼리에 너무 많은 데이터를 요청하여 문제가 발생할 수 있습니다. 한번에 너무 많은 데이터를 요청할 경우 서버 성능이 떨어질 뿐만 아니라 서비스가 다운 될 수 있습니다. 이런 경우를 대비해서 Graph..
안녕하세요. 오늘은 네트워크 기본 지식 몇 가지(?)에 대해서 알아보겠습니다. 알아볼 내용 IP Address IPv4 / IPv6 Router Public / Private IP Address NAT Port forwarding Dynamic / Static IP Address IP Address 란? 다른 사람에게 전화를 하기 위해서는 전화번호가 필요한 것 처럼 컴퓨터 간의 통신을 하기 위해서는 주소가 필요한데 이를 IP 주소라고 한다. IPv4와 IPv6 란? 컴퓨터 간의 통신을 하기위해 필요한 IP주소는 두 가지 버전이 있는데 IPv4와 IPv6가 있다. IPv4는 32비트의 형태로 구성된 IP 주소이다. 약 42억개의 주소를 가질 수 있는데 인터넷에 연결되는 기기의 수가 기하급수적으로 늘어나면서..