반응형 Study/Go21 [Go] Google OAuth2.0 적용 OAuth 적용 시작하기 전 OAuth에 대한 설명은 아래 포스팅을 봐 주시면 감사하겠다! 2022.06.02 - [Study/Server] - [Server] OAuth 알고 쓰기 [Server] OAuth 알고 쓰기 OAuth란? 다양한 플랫폼 환경에서 권한 부여를 위한 산업 표준 프로토콜이다. 아마 다양한 환경에서 알게 모르게 OAuth를 사용한 인증을 해 보았을 것이다. 당장에 생각나는 예시를 들자면 첨부한 roy-jang.tistory.com Google의 OAuth2를 이 포스팅에 작성된 절차를 기준으로 하나씩 살펴볼 것이다. OAuth 적용 절차 1. Client는 OAuth를 사용하기 위해 사전에 Resource Server에게 OAuth에 대한 사용에 대한 동의를 받아 둔다. -> 이 과.. 2022. 8. 29. [Go] Context 패키지 알고쓰기 context를 공부하는 이유 git hub에서 Go를 사용하는 잘 짜여진 프로젝트들은 context를 잘 사용한다. 프로젝트에 엮인 micro service가 많아지면 많아질수록 더 효율적인 스킬처럼 느껴지며 context를 사용하는 부분을 미리 익혀두면 도움이 될 듯 하다. context란? context. 사전적 뜻은 “문맥”이다. 그리고 문맥의 정의는 프로세스 진행 중, 프로세스의 앞 뒤 간 맥락이라 표현할 수 있겠다. Go에서 사용되는 context 또한 크게 다르지 않다. Context는 작업 명세서와 같은 역할로 프로젝트의 앞뒤 흐름을 관찰하고 제어할 수 있게 도와준다. context를 사용하는 이유 context는 다음 작업의 매개변수로 보낼 context를 위해 자식 context를 생성.. 2022. 8. 17. [Go] GC(Garbage Collection) 심화 GC 내가 참조하고 있는 글은 2019년에 Go 1.12v 때, 포스팅 된 글 이므로 최근의 Go와 다를 수 있다. 내가 알기론 STW도 제거하기 위해 시도하고 있다고 들었는데.. 이또한 찾아보아야겠다. GC 과정 GC가 실행될 때, 세가지의 페이즈가 존재한다. 두가지는 STW 방식이고 한가지는 어플리케이션에 지연을 유발하는 동시성 방식이다. 세가지 페이즈는 순서대로 Mark Setup - STW(Stop The World) Marking - Concurrent Mark Termination - STW 이다. 하나씩 살펴보자. Mark Setup - STW 처음 GC가 실행되면 쓰기를 제한하는 튜닝을 하게되는데 이는 GC 고루틴과 어플리케이션 고루틴의 무결성을 위해서이다. 쓰기를 제한하기 위해 모든 고루.. 2022. 8. 5. [Go] 고루틴(GoRoutine) 심화(7) - 파이프라인 유래 파이프라인은 한 곳에서 다른 곳으로 액체를 옮기기 위해 사용한 파이프들의 집합을 말한다. 컴퓨터에서 말하는 파이프라인 역시 이와 마찬가지로 어떤 위치에서 다른 위치로 데이터를 처리 후 운반하기에 이와 같은 용어를 사용하는 것으로 보인다. 파이프라인이란? 시스템에서 추상화를 구성하는 데 사용할 수 있는 도구이다. 특히 Stream이나 Batch 작업들을 처리해야 할 때에는 특히 탁월한 효과를 낸다. 각 단계의 관심사를 분리할 수 있다. 그로써 다양한 이점을 얻을 수 있다. 1. 상호 독립적으로 단계를 수정할 수 있다. 2. 단계들의 결합 방식을 짜맞출 수 있다. 3. 일부분을 팬 아웃하거나 속도를 제한할 수 있다. 파이프라인의 특성 1. 각 단계는 동일한 타입을 소비하고 리턴한다. 2. 각 단계에서 .. 2022. 6. 24. [Go] 고루틴(GoRoutine) 심화(6) - 고루틴 에러 처리 아무리 잘 짜여진 코드에서도 에러는 발생하기 마련이다. 그 원인이 내부적인 문제가 아니라 외부 환경에 의한 문제일 수 도 있고 아직 내가 겪어보지 못한 다양한 이유가 존재할 수 있다. 그렇기에 안정적인 서비스를 위해선 효율적인 에러 처리가 필수적이다. 그리고 Go라는 언어는 다른 언어에서 채용하는 에러 처리방법인 예외 모델을 사용하지 않고 더욱 직접적으로 에러를 다루는 형식을 채용한다. 그렇기에 다른 프로그래밍 언어에 비해 귀찮지만 조금 더 효율적이고 직관적인 에러 처리를 할 수 있다. 그렇다면 동시성 프로그래밍을 적용한 작업에선 어떤식으로 처리하는 것이 좋을까? 에러 처리에서 중요한 것 에러 처리를 함에 있어서 가장 중요한 것은 에러를 처리하는 주체이다. 동시에 프로세스가 병렬적으로 진행되는 동시성 프.. 2022. 6. 20. [Go] 고루틴(GoRoutine) 심화(5) - 누수 관리 메모리 누수 비록 고루틴이 다른 쓰레드에 비해 가볍긴 하지만 메모리를 사용하는 것은 당연할 것이다. 그렇기에 사용하진 않지만 살아있는 고루틴은 프로세스의 메모리를 쓸데없이 낭비하게 될 것이다. 이런 현상을 메모리 누수라 한다. 메모리 누수를 관리하는 방법을 살펴보자. 누수 관리 누수가 일어나는 예시 package main import ( "fmt" ) func main() { doWork := func(strings 2022. 5. 24. 이전 1 2 3 4 다음 반응형