일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 대규모 시스템 설계
- Lambda@Edge
- Bastion Server
- UnBuffered channel
- Logrus
- notification system
- 디자인패턴
- Golines
- Buffered channel
- argocd
- 컴포지트패턴
- goroutine
- gitops
- Live Template
- 시스템 설계
- Infra
- System Design
- 클래스 관계
- GoF
- GoF 디자인패턴
- 알림 시스템
- AWS Infra
- tenneling
- image resizing
- Kubernetes
- go
- Helm V3
- AWS
- 윈도우키보드
- golang
- Today
- Total
목록Information Technology (295)
Fall in IT.
안녕하세요. 오늘은 네트워크 기본 지식 몇 가지(?)에 대해서 알아보겠습니다. 알아볼 내용 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억개의 주소를 가질 수 있는데 인터넷에 연결되는 기기의 수가 기하급수적으로 늘어나면서..
안녕하세요. 오늘은 입력받은 문자열에 중복된 문자가 존재하는지 확인하는 알고리즘을 작성해보겠습니다. (아래 알고리즘은 Golang 언어를 사용하므로 언어에 따라 다를 수 있습니다) 사전지식 문자열 집한인 문자열을 순회할 수 있는가? 한글과 영문 모두 문자열 순회할 수 있는가? (index 순회를 할 경우 구분 필요, range로 순회할 경우 rune타입으로 변환하여 순회하기 때문에 상관없다) rune 타입에 대하여 알고 있는가? (rune은 유니코드를 표현하는 타입으로 int32 타입의 별칭과 같다) 유니코드 인코딩에서 한글은 3byte를 사용하고 영어는 1byte를 사용한다. 유니코드와 아스키코드의 개념 문제 문자열이 주어졌을때 이 문자열에 같은 문자가 중복되어 존재하는지 확인하라 자료구조를 사용하지 ..
안녕하세요. 오늘은 데이터베이스 테이블간의 식별관계와 비식별관계에 대해서 간단하게 알아보겠습니다. 테이블간의 관계 설정 예를들어, 데이터베이스에서 유저테이블과 주문테이블간의 관계는 1대N 관계이다. 왜냐하면 한명의 유저는 여러번 주문을 할 수 있기 때문이다. 이때 두 테이블 간의 관계를 정의해야하는데 비식별관계로 정의할수도 있고, 식별관계로 정의할수도 있다. 식별관계 부모 테이블(=참조되는 테이블)의 기본키를 자식 테이블(=참조하는 테이블)의 기본키로 이용하는 방법을 말한다. 위의 예에서는 유저테이블이 부모테이블이 되고 자식 테이블이 주문테이블이 된다. 비식별관계 부모 테이블(=참조되는 테이블)의 기본키를 자식 테이블(=참조하는 테이블)의 외래키로 이용하는 방법을 말한다. 식별관계와 비식별관계의 차이점 ..
안녕하세요. 오늘은 Golang에서 Singleton Pattern을 구현하는 방법에 대해서 간단하게 알아보겠습니다. Singleton Pattern이란? 이 패턴은 인스턴스가 하나만 존재해야 하는 경우 사용된다. (예를들어서, DB 인스턴스나 Logger와 같은 인스턴스가 이에 해당할 수 있다.) 구현 방법 1. Mutex를 사용하는 방법 var lock = &sync.Mutex{} type single struct { } var singleInstance *single func GetInstance() *single { if singleInstance == nil { lock.Lock() defer lock.Unlock() if singleInstance == nil { fmt.Println("[Mu..
안녕하세요. 오늘은 Go 1.18 버전에서 추가 된 generic을 사용해보도록 하겠습니다. Generic에 대한 개념은 여기서 확인해주시기 바랍니다. Generic 사용 전 (source code) interface를 사용하여 스택을 구현한 경우 package main import "fmt" type stack struct { data []interface{} } type Stack interface { Push(data interface{}) Pop() interface{} Get() []interface{} } func New() Stack { return &stack{ data: []interface{}{}, } } func (s *stack) Push(data interface{}) { fmt...
안녕하세요. 오늘은 Go에서 Slice에서 중복을 제거하는 방법에 대해서 알아보겠습니다. Go에서는 Map을 사용해서 Slice의 아이템 중복을 제거할 수 있습니다. Slice의 아이템을 순회하면서 map에 존재하지 않다면 삽입, 존재한다면 pass 하는 방식을 이용합니다. (이때, map의 값으로 빈구조체(struct{})를 넣는 이유는 빈구조체의 경우 메모리를 차지하지 않기 때문입니다.) 샘플 코드 func deleteDuplicateItem(arr []string) []string { ret := []string{} m := make(map[string]struct{}) for _, val := range arr { if _, ok := m[val]; !ok { m[val] = struct{}{} ..
안녕하세요, 오늘은 HTML 태그 중 A tag의 download 속성을 사용해 파일을 다운로드할때 발생하는 문제에 대해서 알아보겠습니다. 상황 AWS에 업로드된 파일의 URL을 a tag의 download 속성을 이용하여 다운로드 하고자 한다. 그런데, AWS의 올라간 파일명과 다르게 다운로드 되도록하고자 한다. a tag의 download 속성을 사용하여 filename을 명시해주었다. 다운로드 문제 a tag의 download 속성에 설정한 filename이 적용되지 않았다. 원인 확인해보니 a tag의 download 속성은 두 가지 조건이 충족되어야했다. Same Origin URL (동일 출처) blob, data schemes 에서만 작동 해결방안 http header에 Content-D..
Service Object 란? 파드에 접근할 수 있는 정책을 정의하는 개념. 서비스는 기본적으로 자신의 클러스터 IP를 가지고 있고 이 서비스를 파드에 연결하면 서비스의 아이피로 파드에 접근이 가능하다. 파드에도 자신의 클러스터 IP를 가지고 있다. 그렇다면 왜 서비스를 통해서 파드에 접근해야할까? 그 이유는, 파드라는 존재는 언제든지 죽을 수 있고 재생성될 수 있다. 파드의 아이피는 가변적이라 재생성되면 변한다. 그렇기 때문에 파드의 아이피는 신뢰성이 떨어지고 서비스 오브젝트는 지우지 않는 한 삭제되지 않는다. 따라서, 특정 파드에 일관된 아이피를 통한 접근을 가능하게 하기 때문에 서비스를 사용한다. Service의 특징 고정된 IP 사용 가능 파드를 다양한 방식으로 외부에 노출 가능 트래픽 분산 가..
목적 GraphQL Code Generator를 도입하여 클라이언트의 생산성을 높이고 유지보수를 쉽게 할 수 있도록 한다. 문제 필자의 회사에서는 다양한 클라이언트 서비스를 운영하고 있고, 각각의 클라이언트 서비스에 제공되는 데이터는 GraphQL API를 통해 마이크로서비스 형태로 제공하고 있다. 클라이언트 서비스는 모두 TypeScript를 사용해서 GraphQL 스키마에 대응되는 Type 또는 Interface를 선언하여 사용하고 있었다. 이때, GraphQL 스키마의 변경 또는 추가가 발생할 경우 클라이언트의 모든 서비스들은 Type 또는 Interface를 재정의하거나 새롭게 정의해야하는 문제가 있었다. 요구사항 정의된 GraphQL 스키마를 generate해서 모든 프로젝트에서 공통으로 사용할..
소개 AWS 환경설정 하는 방법을 알아봅니다. 아래 내용은 AWS 계정이 존재한다는 가정하에 진행됩니다. 배우게 될 내용 계정 보안 설정 AWS CLI 설정 Chapter 1. 계정 보안 설정 소개 보안을 위해 루트 사용자 계정의 보안설정을 진행하고, 계정에 로그인할 사용자를 AWS IAM을 통해 생성해본다. 배우게 될 내용 루트 사용자 계정 보안 설정 방법 추가 IAM 사용자 설정 구현 루트 사용자 보안 설정 루트 계정으로 로그인 한 후, IAM 서비스에 들어가면 루트 사용자 보아을 설정하라는 메시지가 나타난다. MFA 활성화를 클릭하면 MFA 설정 화면이 나온다. 가상 MFA 디바이스를 선택하고 사용자의 휴대폰에서 사용 가능한 인증 앱을 설치한 후 연동한다. 추가 사용자 및 역할 설정 루트 계정은 일..