일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- apollo router
- Infra
- Logrus
- 티스토리챌린지
- elasticsearch
- Intellij
- UnBuffered channel
- 컴포지트패턴
- golang
- 사설 ip
- 디자인패턴
- body size
- 오블완
- 배포 프로세스
- Kubernetes
- go
- AWS
- 윈도우키보드
- Buffered channel
- 배포 파이프라인
- GoF 디자인패턴
- intellij ide
- System Design
- Golines
- 대규모 시스템 설계
- gitops
- GoF
- http 413
- goland
- notification system
- Today
- Total
목록기타 (87)
Fall in IT.
프론트엔드에서 발생한 HTTP 413 상태 코드 이슈 해결하기회사에서 일을 하던 중, 프론트엔드 개발자로부터 데이터를 생성하는 API를 호출할 때 HTTP 상태 코드 413 에러가 응답으로 반환된다는 이야기를 들었습니다. 이 상태 코드는 클라이언트가 서버에 보낸 요청의 body 크기가 서버가 허용하는 최대 크기를 초과했을 때 나타나는 HTTP 413 Payload Too Large 에러입니다.개발자로부터 받은 요청을 확인해 보니, 설정된 body size 제한보다 적은 크기의 요청이었고 서버 로그에도 해당 요청이 남아있지 않았습니다. 로컬 환경에서 같은 입력으로 테스트했을 때는 정상적으로 동작하는 것이 확인되었습니다. 그렇다면 문제는 서버가 아니라 클라이언트와 서버 사이의 다른 요소일 가능성이 있었습니다..
이 문서는 필자의 프로젝트에서 사용 중인 배포 파이프라인에 대해 설명합니다.배포 파이프라인은 Kubernetes, ArgoCD, AWS ECR 등의 클라우드 및 컨테이너 기술을 활용하여 애플리케이션을 효율적으로 배포하고 관리하기 위해 구성되었습니다.사전 지식ArgoCD란?ArgoCD는 Kubernetes 애플리케이션을 GitOps 방식으로 배포하고 관리하는 도구입니다. 애플리케이션의 선언적 설정 파일을 Git 리포지토리(혹은 OCI 레지스트리)에서 가져와서 Kubernetes 클러스터에 동기화하며, Git 상태와 클러스터 상태 간의 차이를 모니터링하여 자동화된 배포를 수행합니다.GitOps란?GitOps는 애플리케이션 배포 및 인프라 관리를 Git을 중심으로 수행하는 방법론입니다. 즉, 애플리케이션의 선..
안녕하세요.오늘은 맥 터미널에서(=키보드를 사용해서) Goland IDE를 실행하는 방법을 알아보겠습니다. 설정 방법1. 터미널에서 아래 경로로 이동 (/usr/local/bin)$ cd /usr/local/bin 2. goland 파일 생성$ touch goland 3. goland 파일에 아래 내용 입력#!/bin/shopen -na "GoLand.app" --args "$@" 4. goland 파일 권한 변경$ chmod +x /usr/local/bin/goland 결과goland 명령어를 사용하여 특정 경로의 프로젝트를 실행할 수 있다. 참조https://www.jetbrains.com/help/go/2024.1/working-with-the-ide-features-from-command-line..
안녕하세요. 오늘은 윈도우 PC용 키보드를 MAC에서 사용할때 편하게 사용하도록 설정하는 방법에 대해서 알아보겠습니다. 일반 키보드와 애플키보드의 차이점 애플키보드 - 컨트롤 / option(alt) / command 순으로 키보드가 배열되어 있습니다. (좌측하단에 키보드배열) 윈도우키보드 - 컨트롤 / 윈도우 / alt 순으로 키보드가 배열되어 있습니다. (여기서, 윈도우 키는 command키로 사용됩니다.) 키보드 배열을 동일하게 설정하는 방법 환경설정 > 키보드로 들어갑니다. 우측에 키보드 단축키를 클릭합니다. 좌측 하단에 보조키를 선택합니다. 해당 키보드를 선택합니다. option키는 command키로, command키는 option키로 서로 반대로 설정합니다. 완료! 모두 즐거운 코딩하세요~
Go에서 의존성 역전 원칙(DIP) 활용하기현대 소프트웨어 개발 환경에서는 유연하고 유지 관리가 가능한 애플리케이션을 설계하는 것이 그 어느 때보다 중요합니다. 이를 달성하기 위한 한 가지 핵심은 객체 지향 설계를 안내하는 SOLID 원칙의 초석인 종속성 역전 원칙(DIP)을 이용하는 것입니다. 이 게시물에서는 DIP에 대해서 알아보겠습니다. 종속성 역전 원리란 무엇입니까?DIP의 핵심은 소프트웨어 모듈을 분리하는 것을 목표로 합니다. 이 원칙은 두 가지 주요 아이디어를 주장합니다.상위 모듈은 하위 모듈에 의존해서는 안 됩니다. 대신, 둘 다 추상화(인터페이스 또는 추상 클래스)에 의존해야 합니다.추상화는 세부사항에 의존해서는 안 됩니다. 오히려 세부 사항은 추상화를 따라야 합니다.DIP를 준수함으로써 ..
도커 컴포즈 도대체 왜 필요한데? 안녕하세요. 오늘은 도커와 도커 컴포즈에 대해서 알아보겠습니다. 최근에 도커 컨테이너 간의 연결에 대한 간단한 질문(?)을 받았는데 잘 생각이 나지 않아서 GPT의 도움을 받아서 답했던 일이 있었습니다. 그래서 다시한번 도커에 대한 개념과 도커 컴포즈에 대해 정리하고자 글을 적게 되었습니다. 도커란? 도커란 가상화 기술을 사용하여 애플리케이션과 그에 필요한 실행 환경을 컨테이너로 패키징하는 오픈 소스 플랫폼이다. 도커는 그럼 왜 필요한가? 도커는 개발 환경을 표준화하고, 애플리케이션의 배포와 관리를 단순화하는데 도움을 준다. 여러 환경에서 일관된 실행을 보장하며 가상화를 통해 시스템 자원을 효율적으로 사용할 수 있다. 또한 확장성이 뛰어나며 빠른 배포를 가능케 하므로 개..
안녕하세요. 오늘은 UML, 클래스간의 관계에 대해서 알아보겠습니다. UML(Unified Modeling Language)이란? 1997년 OMG(Object Management Group)에서 표준으로 채택한 소프트웨어를 모델링 할때 사용하는 언어이다. 개념을 설명하기 위해 사용되기도 하고 구현된 시스템의 구조를 설명하기위해 사용되기도 한다. 소프트웨어 모델링이란? - 다른 사람들과의 의사소통 또는 설계 논의 - 전체 시스템의 구조 및 클래스의 의존성 파악 - 유지보수를 위한 설계 문서 UML의 종류 UML은 크게 두 종류의 다이어그램이 존재한다. 1. 구조 다이어그램 (Structure Diagram) 2. 행위 다이어그램 (Behavior Diagram) 구조 다이어그램 시스템의 개념, 관계 등의..
Composite Pattern 컴포짓 패턴 그룹 전체와 개별 객체를 동일하게 처리할 수 있는 패턴 클라이언트 입장에서 ‘전체’나 ‘부분’이나 모두 동일한 컴포넌트로 인식할 수 있는 계층을 만든다. (Part-Whole Hierarchy) 예를들어, 가방에 물건(아이템)이 5가지 존재한다고 생각해보자. 물 립밤 향수 노트북 안경 물건들은 각각 쓰임새는 다르지만, 그에 해당하는 이름과 가격이 정해져있다. 이때 우리는 물건의 각각의 가격과 가방안에 든 모든 물건들의 가격을 알고 싶다고 할 경우에 컴포짓 패턴을 유용하게 사용할 수 있다. 가방 → 컴포지트를 나타내고 컴포지트는 안에 컴포넌트들을 갖고 있다. 컴포넌트 → 물, 향수 등이 해당되고 컴포지트에 기능 실행을 요청하면 컴포지트는 포함하고 있는 컴포넌트들..
Git commit message 관리 (with. rebase) git을 작업 이력을 저장하는 용도로만 사용하다보니 commit 이력이 지저분해지기 시작했고 코드리뷰가 어려워지기 시작했다. 또한, 특정 시점으로 코드를 rollback 하려고 했더니… 내가 원하던 시점을 도무지 찾을 수가 없었다. 아, 그리고 하나 더 말하자면 release 배포 후 release note를 자동 불러오기 했을때 특정 기능을 개발하는동안 올려두었던 commit message들도 죄다 올라와서 어떤 기능이 추가됐고 변경되었는지 알아보기 어려웠다. 이런 이유들로, Git commit message 관리가 필요하다고 느꼈다. 1. 최소한의 메시지 작성 규칙 1) 소스코드를 보지 않고 커밋 메시지만으로 어떤 변경사항이 있었는지 ..
안녕하세요. 오늘은 GoLand(IntelliJ) IDE에서 라이브 템플릿을 사용하는 방법에 대해서 알아보겠습니다. 라이브템플릿이란? IntelliJ IDE에서 제공하는 기능으로, 테스트코드와 같이 반복적으로 작성되는 코드를 템플릿 형태로 만들어두고 단축키를 사용해서 쉽게 불러오는 기능을 말한다. 라이브템플릿 적용방법 아래에서는 GoLand IDE(IntelliJ에서 제공하는 IDE)를 사용하고 Go 언어로 개발할때 사용할 Repository Test Template을 만들어보도록 하겠습니다. 1. cmd + , 단축키를 누른다. 2. 좌측 에디터 선택 -> 라이브 템플릿 선택 -> 우측에 Go를 선택하고 +버튼 선택 3. 템플릿 텍스트 입력 type $Template$RepositoryTestSuite..