본문 바로가기

전체 글

(67)
Golang, 그대들은 어떻게 할 것인가 - Error Wrapping, Handling Golang, 그대들은 어떻게 할 것인가 - 1. 들어가며 Golang, 그대들은 어떻게 할 것인가 - 2. MongoDB Go Driver 추상화 Golang, 그대들은 어떻게 할 것인가 - 3. error 래핑 Golang, 그대들은 어떻게 할 것인가 - 4. error 핸들링
[Golang] Golang에서 error 처리를 어떻게 해야할까 문제 상황 Golang으로 백엔드 개발한지 거의 1년이 되어가고 있는데, 처음 접했을 때부터 지금까지 항상 애매했던게 error 처리 방식이었다. Golang에서는 기본적으로 프로그램이 죽는 exception(a.k.a Fatal Error)가 아닌 이상, 절대 panic(타 언어에서는 exception의 개념정도)을 던지지 말고, return value로 error를 리턴하도록 가이드를 하고 있다. 그래서 대부분 아래와 같이 if 분기문이 많다. num1, err := strconv.Atoi("100") // 문자열 "100"을 숫자 100으로 변환 if err != nil { fmt.Printf("error occured, message: %s", err.Error()) } else { fmt.Pri..
[사이드프로젝트] Jackson 2022.10.08 - [분류 전체보기] - [사이드프로젝트] Oauth 회원가입 및 로그인 - 카카오 [사이드프로젝트] Oauth 회원가입 및 로그인 - 카카오 2022.10.01 - [분류 전체보기] - [사이드프로젝트] 프로젝트 설정 - CloudWatch / EC2 배포 [사이드프로젝트] 프로젝트 설정 - CloudWatch / EC2 배포 2022.09.29 - [분류 전체보기] - [사이드프로젝트] 프로젝트.. juna-dev.tistory.com Request, Response 및 Dto 객체를 이용하여 응답을 내려주면서, 객체에 lombok 어노테이션을 잊어버려서 에러가 나는 경우가 종종 있었다. 그럴때마다 그냥 getter, setter를 넣어줬었는데, 한번 정확히 알고 넘어가야할 것 같..
[사이드프로젝트] Oauth 회원가입 및 로그인 - 카카오 2022.10.01 - [분류 전체보기] - [사이드프로젝트] 프로젝트 설정 - CloudWatch / EC2 배포 [사이드프로젝트] 프로젝트 설정 - CloudWatch / EC2 배포 2022.09.29 - [분류 전체보기] - [사이드프로젝트] 프로젝트 설정 - CI/CD [사이드프로젝트] 프로젝트 설정 - CI/CD 2022.09.28 - [분류 전체보기] - [사이드프로젝트] 사전 준비 [사이드프로젝트] 사전 준비 juna-dev.tistory.com OAuth를 활용해 프로젝트 유저를 구현하기로 했다. 우선 접근하기 가장 쉬운 카카오를 사용하기로 하였고, 해당 문서를 참고했다. 카카오 OAuth 우선 OAuth에 관해 간단히 흐름을 보자면 Client(웹)에서 Authorization Serv..
[사이드프로젝트] 프로젝트 설정 - CloudWatch / EC2 배포 2022.09.29 - [분류 전체보기] - [사이드프로젝트] 프로젝트 설정 - CI/CD [사이드프로젝트] 프로젝트 설정 - CI/CD 2022.09.28 - [분류 전체보기] - [사이드프로젝트] 사전 준비 [사이드프로젝트] 사전 준비 사이드 프로젝트를 곧 시작할 것 같아, 인프라 환경을 어떤 것을 사용하고 구축해야할 지 사전 조사를 해보 juna-dev.tistory.com 스프링에서 발생하는 로그를 ec2에 직접 접속하지 않고, 외부에서 쉽게 볼 수 있게 ClouldWatch를 연동했다. 이전에 EC2에 CloudWatchFullAccess 권한을 부여했기 때문에, 해당 설정은 패스. 스프링부트에서 dependency 추가로 쉽게 설정할 수 있었다. build.gradle에 아래의 모듈을 설정해주..
[사이드프로젝트] 프로젝트 설정 - CI/CD 2022.09.28 - [분류 전체보기] - [사이드프로젝트] 사전 준비 [사이드프로젝트] 사전 준비 사이드 프로젝트를 곧 시작할 것 같아, 인프라 환경을 어떤 것을 사용하고 구축해야할 지 사전 조사를 해보았다. 내가 조사를 하면서 가장 중요하게 생각했던 것은 과하지 않을 것이었다. 물론 juna-dev.tistory.com 어느정도 조사를 하고 나서 프로젝트 세팅을 시작했다. 우선 git에서 사용할 CI/CD를 구축하기로 했다. 이를 위해 먼저 s3, RDS를 먼저 생성하고, CI가 완료된 후에는 EC2, CodeDeploy를 만들었다. CI git action 참고자료 : GitHub-Actions로 CI/CD 구축하기(AWS, Docker, SpringBoot) 회사에서 스프링 개발을 할 때, CI..
[사이드프로젝트] 사전 준비 사이드 프로젝트를 곧 시작할 것 같아, 인프라 환경을 어떤 것을 사용하고 구축해야할 지 사전 조사를 해보았다. 내가 조사를 하면서 가장 중요하게 생각했던 것은 과하지 않을 것이었다. 물론 다양한 기술 및 도구들을 사용해보는 것은 좋은 경험이 될 것이지만, 관리 포인트와 시간도 많이 소요될 뿐더러 잘 알지 못한채로 도입하였다가, 사용자들에게 불편을 야기할 수 있었기 때문이다. 그래서 우선 기본적인 클라우드는 aws를 선택했다. 프리티어를 무료로 사용 가능하고, 레퍼런스가 많아 인프라 환경 세팅을 잘 알지 못한 나에게 좋을 것 같았다. 그래서 aws 내의 서비스들을 둘러보며 어떤 것을 사용할 수 있는지 확인하여 정했다. 서버 → EC2 or ECS DB → RDS 로깅 → Cloud Watch static ..
[Golang] MongoDB Wrapper - 2 2022.08.15 - [Golang] - [Golang] MongoDB wrapper [Golang] MongoDB wrapper go-mongo go.mongodb.org/mongo-driver 를 기반으로 실제 프로젝트에서 유용하게 사용될 수 있는 wrapper 어떻게 하다 시작했나? 회사에 입사하고 나서, golang과 몽고 DB를 주로 사용하게 되었다. mongo-driver.. juna-dev.tistory.com https://github.com/kjh03160/go-mongo/pull/25/files generic 디코딩 & not modified 삭제 & 리팩토링 by kjh03160 · Pull Request #25 · kjh03160/go-mongo github.com 이전에 고민했던..