
개요첫 포스팅이었던 클린 아키텍처의 세 계층에 대해 간단한 복습을 한 다음, handler 계층의 중요한 역할인 요청의 파라미터들에 대한 유효성 검사(validation)을 다루어 본다.링크GitHub 브랜치: https://github.com/nicewook/gocore/tree/8_validation블로그 링크Go 백엔드 1: 클린 아키텍처 기본Go 백엔드 2: 설정Go 백엔드 3: 데이터베이스 연결Go 백엔드 4: 유닛 테스트Go 백엔드 5: 의존성 주입Go 백엔드 6: 미들웨어Go 백엔드 7: 로깅Go 백엔드 8: 인증과 인가 - 비밀번호Go 백엔드 9: 인증과 인가 - JWT 생성Go 백엔드 10: 인증과 인가 - JWT 인증Go 백엔드 11: 유효성 검사목차클린 아키텍처의 세 계층유효성 검사g..

개요RequestID, Logger 미들웨어를 고도화하여 요청, 응답에 대한 로깅을 구조적으로 남겨서 추적, 모니터링에 유용하게 만들어보자.링크GitHub 브랜치: https://github.com/nicewook/gocore/tree/6_logging블로그 링크Go 백엔드 1: 클린 아키텍처 기본Go 백엔드 2: 설정Go 백엔드 3: 데이터베이스 연결Go 백엔드 4: 유닛 테스트Go 백엔드 5: 의존성 주입Go 백엔드 6: 미들웨어Go 백엔드 7: 로깅RequestID 미들웨어// AS-ISe.Use(middleware.RequestID())// TO-BEe.Use(middleware.RequestIDWithConfig(middleware.RequestIDConfig{ RequestIDHandler: ..

개요백엔드 서버에는 다양한 미들웨어가 기본적으로 들어가고 또한 커스텀한 미들웨어를 만들어 추가하기도 한다.Echo 서버에 중요 미들웨어를 추가해보자.링크GitHub 브랜치: https://github.com/nicewook/gocore/tree/5_middleware블로그 링크Go 백엔드 1: 클린 아키텍처 기본Go 백엔드 2: 설정Go 백엔드 3: 데이터베이스 연결Go 백엔드 4: 유닛 테스트Go 백엔드 5: 의존성 주입Go 백엔드 6: 미들웨어미들웨어 의존성 추가middlewares 패키지의 RegisterMiddlewares 를 주입하였다.func main() { app := fx.New( fx.Provide( NewConfig, NewDB, ..

개요현시점 코드에서 User라는 도메인을 가지고 있을 때의 의존성 주입 부분을 보자. 환경 → 설정 → 데이터베이스 연결 → 리포지토리 → 유스케이스 → 핸들러 순으로 의존성을 주입하고 있다. 단순한 서버에서는 이처럼 명시적으로 의존성을 이해하고 주입할 수 있지만 프로젝트가 커질수록 아래와 같은 문제들이 발생한다:순환 참조(Circular Dependency): 의존성이 서로 얽히며 무한 루프에 빠질 수 있다.초기화 순서 문제: 의존성이 잘못된 순서로 초기화되면 실행 중 에러가 발생할 수 있다.환경별 구성 차이: 환경(dev, qa, stg, prod)마다 필요한 구성 요소가 다를 수 있다. env := flag.String("env", "dev", "Environment (dev, qa, stg, pr..

개요지금까지 handler, usecase, repository 계층을 둔 클린 아키텍처 구조의 백엔드를 구현하였고, 런타임에 설정을 가져와 데이터베이스에 연결하고, 이 연결을 repository에 주입하여 데이터베이스 작업을 하도록 하였다.기능 구현에 집중하여 테스트 코드가 없이 구현을 해왔는데 이제는 코드의 안전성을 높이기 위해 유닛테스트를 추가해보자. 유닛 테스트를 작성하면 작은 코드 단위에서 문제를 빠르게 발견하고 수정할 수 있고, 리팩터링 시에 기존 기능이 정상 동작하는지 쉽게 검증할 수 있다. 그리고, 자동화된 테스트로 반복적인 수작업 검증을 줄여 개발 효율성이 높아진다.링크GitHub 브랜치: https://github.com/nicewook/gocore/tree/3_unit-test블로그 ..

개요Go 백엔드 2: 설정과 같은 브랜치에서 작업하였으나 데이터베이스 관련은 별도로 정리해두었다. 데이터베이스 마이그레이션과 데이터베이스 관련 라이브러리는 추후 별도로 다룰 예정이다.(참고) Go 백엔드 1: 클린 아키텍처 기본 코드를 누적하고 싶었지만, 오류와 개선 사항이 있어 전면적으로 수정했다. 양해를 구한다.링크GitHub 브랜치: https://github.com/nicewook/gocore/tree/2_config-and-db블로그 링크Go 백엔드 1: 클린 아키텍처 기본Go 백엔드 2: 설정Go 백엔드 3: 데이터베이스 연결설정프로젝트 구조데이터베이스와 관련한 프로젝트의 주요 디렉토리와 파일 구조는 다음과 같다(일부 생략)├── cmd│ └── gocore│ └── main.g..

개요서버에는 다양한 설정이 필요하며, 이러한 설정을 별도로 관리하고 서버 실행 시 런타임에 주입하는 것이 유지 보수성과 확장성 측면에서 유리하다. 여기서는 파일로 관리하지만 Vault, AWS Secret Manager, AWS Parameter Store 등을 이용하면 보안에 있어 더욱 좋을 것이다.(참고) 앞선 글의 코드를 누적하고 싶었지만, 오류와 개선 사항이 있어 전면적으로 수정했다. 양해를 구한다.링크GitHub 브랜치: https://github.com/nicewook/gocore/tree/2_config-and-db블로그 링크Go 백엔드 1: 클린 아키텍처 기본Go 백엔드 2: 설정Go 백엔드 3: 데이터베이스 연결설정프로젝트 구조설정과 관련한 프로젝트의 주요 디렉토리와 파일 구조는 다음과 ..

개요Golang 으로 백엔드 서비스를 만든다면 프로젝트 구조, 의존성 주입, 로깅, 데이터베이스 연결과 같이 기본적으로 챙겨야 할 것들이 많다. 서비스를 만들때에 시작점이 될 수 있는, 기본 예제가 담겨있는 서버를 구현해보려 한다. 완성된 백엔드 서버 결과물을 바로 보여주는 것이 아니라 만들어가는 과정을 하나씩 정리하겠다.전체적인 그림을 다 그려놓고 작성하는 글이 아닌 만큼 크고 작은 오류들은 양해를 바라며, 그 첫 번째로 클린 아키텍처로 구현된 기본적인 API 서버를 만들어본다.링크GitHub 브랜치: https://github.com/nicewook/gocore/tree/1_clean-architecture-basic블로그 링크Go 백엔드 1: 클린 아키텍처 기본Go 백엔드 2: 설정Go 백엔드 3:..

개요Golang 무료 강의가 있어 입문하시는 분들께 어떨까 싶기도 하고 GoLand를 사용해볼 기회이기도 하여 강의를 들었다. 강의 사이트는 다음과 같다.사이트: https://www.bytesizego.com/무료강의: Mastering Go With GoLand수강을 완료하면 GoLand 1년 무료 라이선스도 준다 하기에 겸사겸사 잘되었다 싶었는데 수강을 다하지 않아도 마지막 강의 부분에서 라이선스를 받는 방법이 나와있다. 사이트(ByteSyzeGo)에서는 홍보, JetBrains 에서는 GoLand 이용자 확대를 위한 이벤트로 보이는데 언제까지 진행할지는 모르겠다.라이선스 받기강의를 다 듣지 않아도 마지막 강의에 리딤코드를 알려준다. 리딤코드까지 여기 공유할까 했다가 사이트와 젯브레인의 마켓팅 의도..

개요제이펍 IT 전문서 리뷰어 활동으로 “커맨드라인 러스트”를 리뷰한다.알라딘 링크: http://aladin.kr/p/Lqlxs리뷰 동기Go를 좋아하는 Gopher라면 Rust와 비교하는 글들을 넘쳐나게 보아왔을 것이다. 비교적 비슷한 시기에 만들어졌고, 컴파일 언어이며 높은 성능을 자랑하다보니 그런가보다. 재미있는 인연이라면 Rust를 만든 그레이든 호어(Graydon Hoare)와 고언어의 고루틴 개념의 뿌리가 되는 CSP(Communicating Sequential Processes)를 만든 토니 호어(Tony Hoare)가 같은 성이라는 것. 책에서도 언급되지만 둘은 아무 관계도 아니라 한다.아무튼, Go에 비해 좀더 메모리 안정성이 높고, 성능도 조금이나마 우월한 Rust는 시스템 프로그래밍과..

- Total
- Today
- Yesterday
- 클린 애자일
- 인텔리제이
- agile
- 독서
- websocket
- postgres
- Echo
- OpenAI
- gocore
- Bug
- 티스토리챌린지
- middleware
- API
- golang
- 오블완
- 엉클 밥
- intellij
- 잡학툰
- Gin
- 영화
- clean agile
- solid
- bun
- 클린 아키텍처
- go
- 독서후기
- notion
- backend
- ChatGPT
- strange
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |