들어가기에 앞서 먼저 본 글은 https://grpc.io/docs/languages/go/basics/ gRPC의 Basics tutorial의 코드 인것을 밝힙니다. gRPC를 한 번 실습해보았지만 공식 Docs를 읽어보지는 않아서 번역기 등등.. 많은 방법을 통해 혼자 번역, 분석, 주석을 단 글 인점을 알아주시길 바라고, 글이 길지만 누군가에겐 도움이 되지 않을까 하는 마음에 올려봅니다.. 먼저 Github에 존재하는 gRPC를 clone해옵니다. 그리고 현재 Basics tutorial이기 때문에 examples/route_guide안에서만 실습을 할 예정입니다. * 전체 코드를 올린 것이 아니라 부분 부분 잘라서 올려 전체 코드랑 같이봐야 이해하기 편할 거 같습니다 * 1. Protocol B..
들어가기에 앞서 오류로 3일정도 잡아 먹었다 원래 프리티어라도 청구서를 열면 지불해야 될 요금이 1000원도 안되야 하는데 7000원이 나왔다.. 이걸 보는 분들은 이런일이 없기를 바란다 AWS RDS 환경에서 DB접속을하고 API를 날리니 계속 Database연결이 쌓였다. 분명 저번 RDS를 만들었을 때는 이런일이 없었는데 기록을 안 한게 후회가 되는 시점이였다. 먼저 오류난 곳을 보자면 이렇게 지금은 55이지만 150까지 올라갔었다.. 계속 재부팅하고 해결된 줄 알았지만 해결이 안됐다. 1. hikari cp로 해결하기 hikari: connectionTimeout: 600000 maximumPoolSize: 70 maxLifetime: 300000 poolName: HikariCP readOnly..
들어가기에 앞서 정확한 해결방법은 아니지만 이것이라도 도움이 되면 좋겠다라는 생각에 글을 쓴다. 먼저 S3에 배포를 하고 서버 동작을 확인하려고 SSH로 접속할려고 했다. 그런데 무한로딩에 걸렸고 이유를 계속 찾아본 결과 CPU사용률이 100프로에 임박했다는 걸 알아챘다 CPU사용량이 많다면 분할해서 할 수 있도록 램을 추가하거나 Swap memory로 이용할 수 있다는 글이 있어서 바로 해봤다. (생각해보니 운영체제 수업시간에 배운 Memory, HDD랑 Swap하던 방식이이었다..신기) 1. Ec2에 들어가기 ssh {ec2주소등등} 2. Swap 파일 메모리 할당 sudo dd if=/dev/zero of=/swapfile bs=128M count=16 3. swapfile에 접근 권한 주기 sud..
들어가기에 앞서 프로젝트를 진행도중 Github OAuth 2.0을 도입하고자 처음부터 마음먹었다. 그런데 OAuth가 처음이라 개념이 너무 헷갈리기도 했고 Github OAuth2.0을 대상으로 커스텀한 글이 많이 적어 시간이 많이 오래걸렸다. 다른 글들을 많이 참고하고 비슷한 부분이 많지만 그래도 Github로 한 것은 없기에 글을 써봅니다. https://velog.io/@jkijki12/Spring-Boot-OAuth2-JWT-%EC%A0%81%EC%9A%A9%ED%95%B4%EB%B3%B4%EB%A6%AC%EA%B8%B0 해당글을 참고해서 쓴 글입니다!! OAuth 구조에 대한 많은 의견이 있지만 저는 이렇게 구현하기로 했습니다. 많은 과정이있지만 간략하게 코드와, 주석, 설명으로 대체하겠습니다..
들어가기에 앞서 gin-gonic 프레임워크로 공부하던 중 Spring Boot는 MVC패턴으로 코드를 구현하는데 Go에서도 편한 아케텍쳐가 있지 않을까해서 찾아보았고 그중에서 가장 눈에 띄었던 글을 번역한 것입니다. 링크 -> (https://amitshekhar.me/blog/go-backend-clean-architecture) Clean Architecture를 구현했기 때문에 프로젝트에서 생성된 레이어는 다음과 같습니다. 라우터 제어 장치 유스케이스 저장소 도메인 다음은 Go 언어로 작성된 백엔드 프로젝트의 전체 아키텍처입니다. 프로젝트에서 Clean-Architecture를 쓰는 이유는 무엇일까? - 프레임워크 독립적 : 모든 것이 분리되어 있어 필요한 경우 다른패키지로 교체하기가 더 쉽다 e..
들어가기에 앞서 이 글은 gin-gonice의 Docs를 참고해서 쓴 글입니다 당연하게도 Gin은 Go(Golang)로 작성된 웹 프레임워크입니다. 특징은 무엇이 있을까요? 빠르다 , 기수 트리 기반 라우팅, 작은 메모리공간, 예측 가능한 API 성능등의 특징이있습니다 미들웨어 지원 들어오는 HTTP 요청은 일련의 미들웨어와 최종 작업에 의해 처리될 수 있습니다. 예: Logger, Authorization, GZIP 그리고 마지막으로 DB에 메시지를 게시합니다. 충돌 방지 Gin은 Http 요청 중에 발생한 에러를 포착하고 복구할 수 있습니다. 이렇게 하면 서버를 항상 사용가능합니다 JSON 유효성 검사 Gin은 요청에 JSON을 분석하고 검증할 수 있습니다 경로 그룹화 우리가 보내는 url들(Pat..
들어가기에 앞서 처음 백엔드를 공부해보고자 마음 먹었을 때는 근처에 Spring Boot를 공부하는 사람들이 많아서 Spring Boot를 공부했다. 하지만 막상 Spring의 장점을 생각하면 Spring Boot는 대용량 데이터 처리에 용이하다는 것이다. 나는 이것을 잘 써먹지 못했다 대용량 데이터를 겪어본적이 없었기 때문이다. 그래서 이번에 배울 언어와 프레임워크는 많은 데이터 처리양보다는 개발속도가 빠른 것에 치중해서 배워보기로 결정했다. 그래서 일단 내가 배우고 싶은 언어들과 프레임워크 Go vs Node.js를 비교해보고 마지막으로 하나를 선택하고자한다. 많은 백엔드 프레임워크들이 현재 나와있고 각각의 장점이 있다 그렇다면 Node.js에 장단점은 뭘까? Node.js 장점 Node.js는 웹 ..
프로세스란? 쉽게 말하면 프로세스는 코드로 작성된 프로그램이 메모리에 올라가서 사용가능한 상태가 된 것 스레드란? 스레드란 프로세스내에서 실제로 작업을 수행하는 것 모든 프로세스에서는 한 개 이상의 스레드가 존재하고 작업을 수행한다 두 개 이상의 스레드를 가지는 프로세스 -> 멀티스레드 프로세스 그렇다면 과연 멀티 프로세스와 멀티 스레드의 차이는 뭘까 사진을 보면서 이해해보자 멀티 프로세스란? - 여러개의 프로세스가 서로 협려해서 일을 처리한다 - 여러개의 프로세스가 작업을 병렬적으로 처리한다 - 각 프로세스간 메모리 구분 또는 독립된 주소 공간을 가져야 할 때 사용한다 장점 - 독립된 구조이기 때문에 안정성이 높다 (다른 프로세스랑 충돌이 발생하기 어렵다) - 하나의 프로세스가 죽는다고 해도 문제가 되..