개발자의 기록장 블로그

만나서 반가워 !
이거 좋아해?

Google OAuth
·
Backend/기타
Google OAuth를 포함한 인증 대행 서비스들은 대부분 비슷한 플로우로 흘러간다.Apple 제외. 얘네는 인증이 매우 까다롭다. 아래 글을 참조하자.애플 OAuth OAuth를 구성하면서 프론트와 백의 역할을 구분하는게 중요하다.FrontEnd -> GoogleOAutoServer -> BackEnd -> TokenReturn인증 키 발급먼저 Google OAuth 인증을 위해 인증 Client Key를 받아야한다.GCP 에 가입한 뒤 Credentials에서 OAuth client ID를 생성해주자.URL1 에는 GoogleOAuthServer에 요청을 보내는 프론트의 ORIGIN ( except port num ) 을 적어주고, URL2 에는 Google OAuth Token 발급이 끝난 뒤 돌..
Chat GPT with Spring
·
Backend/기타
본 게시글은 23년 11월 16일에 작성된 글입니다.API Key 발급서드파티 API이기 때문에 KEY를 발급받아야 한다.이미 만들어져 있지만 key를 새로 만들어주자.Key는 다시는 확인할 수 없으므로 잘 확인해서 관리하자.생성하면 Usage에서 무료 크레딧이 발급되는 것을 확인할 수 있다.모델 선택Gpt-3 Model자연어를 이해하고 생성하는 모델. Davinci는 가장 유능한 모델이고, Ada는 가장 빠른 모델. 빠를 수록 기대 성능은 떨어진다.text-davinci-003 : 가장 유능한 GPT-3 모델. 다른 모델이 할 수 있는 모든 작업을 수행할 수 있으며, 종종 더 높은 품질, 더 긴 출력 및 더 나은 지침 준수로 수행한다.text-curie-001 : Davinci보다는 덜 유능하지만 빠르..
DevOps - CI/CD
·
원론/DevOps
정의CI/CD란 지속적으로 코드를 통합하고 연속적인 배포를 한다는 것으로 빠른 개발과 배포를 하기 위한 운영 기법이다.코드를 짜고, 빌드를 해서 테스트를 하고 배포하는 과정에서 기존에는 개발자들이 수동으로 작업을 해주어야했다.이런 일련의 흐름을 자동화하기 위한 움직임이 DevOps 관점에서 CI/Cd인 것!Git base CI/CD Pipeline Diagramcode commit은 github이고, code build는 깃 액션이다. 뭘 사용하든 상관없다.다만 K8S 배포 파일 ( 구축 레벨의 코드 )와 소스 코드의 레포지토리는 분리해서 관리하자. 개발팀이 코드를 깃저장소에 푸쉬하고, 깃 액션에서 이를 확인해 빌드한다. 빌드를 끝마치면 이미지 파일을 푸쉬함과 동시에 PR요청을 보내고, PR 리뷰팀이 이..
DevOps - K8S
·
원론/DevOps
Why Kubernetes?컨테이너는 가볍고, 빠르고, 휴대성이 좋다는 장점이 있다.이 장점 때문에 많은 수의 컨테이너로 서비스 규모를 키울 수 있고 스케일 아웃을 통해 다중 트래픽 분산 또한 수월하게 할 수 있다. 하지만 이러한 컨테이너 수의 증가는 결국 관리의 어려움을 가져오게 된다.개발자 관점에서는 다양한 이점을 가졌지만 운영자 관점에서는 다양한 문제가 존재하는 것!컨테이너가 외부 호스트 또는 외부 호스트의 컨테이너와 통신하려면 NAT를 거쳐야 함서비스 고가용성과 분산 자동화는 어떻게 할 것인가?자원의 여유가 있는 호스트를 찾고 그 호스트에 컨테이너를 적절하게 배포해야함컨테이너에 문제가 생기면 버리고 새로 생성해주어야 함트레픽의 양에 따라 컨테이너의 양을 자동으로 조절해주어야 함등등등 이런 문제점을..
DevOps - Container
·
원론/DevOps
Why container ?호스트 OS에 프로세스로 배포를 하면 하나의 프로세스의 죽음이 다른 프로세스의 죽음으로 이어질 수 있다.같은 자원을 격리없이 공유하고 사용하기 때문에. 이를 위해 가상화 머신이 등장했고 네임스페이스 등으로 자원을 격리해 어플리케이션을 분리시켰다.하지만 가상 머신에는 GuestOS가 설치돼야 했고, 이는 머신을 무겁게 해 가볍게 사용할 수 없었다.이를 리눅스의 프로세스 격리기술인 컨테이너를 통해서 해결했다.컨테이너 기술의 핵심은 HostOS의 커널을 컨테이너 프로세스로 자원을 분할해 주는 Container Runtime 이다.대표적으로 도커가 컨테이너 런타임이다.컨테이너 기본 구조장점인프라를 의식하지 않고 경량의 컨테이너를 빠르게 수정/삭제/생성/배포 할 수 있다.이미지 기반으로..
DevOps
·
원론/DevOps
DevOps란?백엔드 개발과 프론트 개발을 모두 한다고 데브옵스 개발자는 절대 아니다.나만의 정의DevOps는 애플리케이션과 서비스를 빠른 속도로 제공할 수 있는 역량을 향상시키는 문화, 철학, 방식 및 도구를 아우르는 단어이다. 즉 Business Agility 를 확보하기 위함이며 이는 MSA 가 추구하는 지향점을 DevOps가 함께 바라보고 있다는 것이라고 생각한다.영역Product ( Tool / Service )버전 관리컨테이너자동화된 인프라 (Infrastructure as Code )CI/CDProcessAgilePeople / Organization개발 내재화독립적인 팀개발 팀과 운영 팀의 협력CNCF ( Cloud Native Computing Foundation )CNCF 는 DevOp..
분산 트렌젝션
·
원론/MSA
동기 / 비동기동기일반적으로 자주 사용하는 방식으로 직관적이다.Callee 서비스로 부터 응답이 올 때까지 기다린 뒤 후처리를 한다.Callee 서비스가 항상 가용한 상태여야 한다.비동기Callee 서비스에 요청을 보내고 다음 작업 흐름으로 넘어간다Callee 서비스로부터 응답이 왔을 때 처리할 callback() 함수를 정의한다.Callee 서비스가 가용한 상태가 아니더라도 Caller 서비스는 동작해야 하므로 분산 환경에서 자주 사용되는 방식이다.비동기 종류Broadcasting단방향 통보로 응답값을 기대하지 않고 데이터를 던지고 자신의 작업 흐름으로 돌아오는 것이다. 신경 쓸 필요 없다. 그냥 던져라Async/Await자신이 할 일을 하다가 Callee 서비스로부터 응답이 오면 callback() ..
API First Design
·
원론/MSA
API First Desgin 은 MSA 설계를 진행하며 서비스를 어떤 기준으로 나눌 것인가? 에서 시작해 각 서비스들이 어떤 기능을 제공할 수 있고, 서비스의 제공 API에 따라 크기나 트랜젝션 범위를 설정할 수 있기 때문에 API를 우선적으로 디자인 하라는 MSA 모델링 관점에서 중요한 내용이다.API First Design이란?협업하는 개발 프로세스에서 API를 첫 번째 우선 순위로 가져가는 것 좋은 설계를 하기 위해서는 개발 팀의 아키텍처를 지속적으로 살펴야하며 클린코드를 짜는 것에 집중해야 한다.릴리즈가 반복될 수록 코드의 양이 많이지고, API의 수도 늘어난다.이 상황에서 클라이언트도 늘어난다면 우리는 더 많은 API를 필요로하게 된다.그렇기 때문에 서비스를 운영하면서 변경 사항이 생기고 백로..