error 썸네일형 리스트형 [Golang] errgroup 이란? Go에서 고루틴을 병렬로 구현하고 실행할 때, 가장 먼저 배우는 도구는 sync.WaitGroup 일 것입니다.하지만 Go에서는 병렬 구현이 쉬운만큼 반대로 어떻게 관리할 것인가를 많이 고민하게 되는 것 같습니다.이번에는 이러한 관리 문제를 해결하기 위해 만들어진 errgroup에 대해서 함께 알아 봅시다.1. errorgroupsync.WaitGroup은 고루틴을 관리하는 좋은 도구였지만, 아쉬운 점이 있었습니다.에러 전파 불가능 : 고루틴 내부에서 에러가 발생해도 상위 부모 루틴은 이를 알 수 있는 방법이 없습니다.별도의 에러 채널을 직접 만들고 관리해야 합니다.리소스 낭비 : 예를 들어 10개의 고루틴을 병렬로 실행하고 있는데, 어떤 고루틴이 에러가 발생했더라도, 나머지 고루틴들은그 사실을 알 수가.. 더보기 [Golang] 에러 분류를 통한 Retry 구현 시스템 개발 및 운영을 하다보면 외부 API 호출이나 DB 작업 중 여러 에러들을 마주하게 됩니다.발생하는 에러들을 파악하고, 재시도를 해야하는 에러인지 아닌지를 판단하고, 다시 재시도하는 로직을 함께 구현해보겠습니다. 1. 에러 재시도모든 에러는 각 성격에 맞춰 명확히 구분하고, 그 구분된 기준으로 에러를 재시도할지 말지를 판단하는 것이 중요합니다.재시도 : 503(Service Unavailable), 429(Too Many Requests), 데이터베이스 연결 끊김 등과 같이 일시적인 네트워크 오류같이 재시도 할 경우 성공할 수 있는 경우.재시도 불가 : 400(Bad Request), 401(Unauthorized) 등 같은 조건에서 시도해도 동일한 결과가 나올 경우 2. 예제 코드 package.. 더보기 [Golang] errors.Is와 As를 활용한 에러 핸들링 Go 언어에서 에러는 단순한 문자열이 아닌 인터페이스로 구성되어 있습니다.그래서 단순히 에러의 유무만을 판단하는 단계를 넘어,에러의 타입이나 정보들을 확인하고 값을 직접 꺼내서 사용하는 방법을 알아보겠습니다. 1. Sentinel Error "Sentinel Error" 는 특정 상태를 나타내기 위해 미리 정의해둔 고정 에러 변수이며 ,뜻에서 알 수 있듯 '파수꾼'이라는 이름처럼 코드 곳곳에 발생하는 에러들과 비교하는 기준점이 됩니다. 특징으로는 패키지 레벨 전역 변수로 선언되며, 주로 에러의 상세 내용보다는 어떤 에러가 발생했는지, 그 종류를 구분할 때 사용합니다.특징전역변수 선언에러 종류 구분에 사용됨// Examplevar ErrInvalidInput = errors.New("invalid inpu.. 더보기 이전 1 다음