본문 바로가기

개발

(11)
OAuth 회원가입, 로그인 유지를 어떻게 해야할까? OAuth 부스트캠프 학습 스프린트중에 OAuth를 구현할 일이 있었다. 요새 서비스라면 왠만하면 지원하는 기능인데, 나는 처음 구현해 보았다. 우선적으로 학습을 하고 구현을 하기로 했다. 학습에는 생활코딩 강의가 큰 도움이 되었으며 이후에 내 나름대로 흐름을 정리해보았다. https://opentutorials.org/course/3405 WEB2 - OAuth 2.0 - 생활코딩 수업소개 사용자가 가입된 서비스의 API에 접근하기 위해서는 사용자로부터 권한을 위임 받아야 합니다. 이 때 사용자의 패스워드 없이도 권한을 위임 받을 수 있는 방법이 필요합니다. 이를 위 opentutorials.org 그렇게 학습후에 간단하게 GitHub 기반 OAuth 로그인을 구현했다. 그런데 예상치 못한 문제가 있었..
Nest JS 프로젝트 배포 자동화 하기 (3) - 스크립트 작성 (1) 편 - https://whiporithm.tistory.com/103 (2) 편 - https://whiporithm.tistory.com/104 젠킨스 스크립트 작성 및 배포 프로젝트 생성 현재 push 이벤트에 ci를 수행하는 젠킨스 프로젝트를 만들었는데, cd (배포) 프로젝트도 만들어서 ci가 이루어진 후에 cd 가 이루어지도록 설정하려고 한다. ci project -> 테스트, 도커 빌드, 도커헙에 push cd project -> 도커헙에서 pull, 도커 이미지 컨테이너화 (도커헙에 올리기 위해서 계정이 필요하니 없으면 만들자.) https://www.docker.com/products/docker-hub/ The World’s Largest Container Registry | Do..
Termius 로 ec2 ssh 접속하기 최근에 Termius 라는 프로그램을 알게 되었다. ssh 접속을 편하게 할 수 있도록 지원해주며, 강점은 모바일로도 접속할 수 있다는 점 같다. 아 그리고 테마도 여러가지여서 예쁜 gui로 실행할수도 있다! 우선 아래 링크에서 설치해보자. https://termius.com/ Termius - SSH platform for Mobile and Desktop Termius helps to organize the work of multiple DevOps and engineering teams. It reduces the admin work for managing users. Enterprise compliance. SOC2 II report. termius.com 설치후 메인화면에서 좌측상단에 "NEW ..
Nest JS 프로젝트 배포 자동화 하기 (2) - docker 설치 (1) 편 - https://whiporithm.tistory.com/103 (3) 편 - https://whiporithm.tistory.com/107 도커 설치 다음은 ec2에 도커를 설치해보겠다. 나는 아래 공식 사이트를 참고하여 설치했다. (예전에는 이런 툴 설치는 블로그를 자주 검색했는데, 공식 문서가 짱이더라.) 젠킨스처럼 os마다 설치 방식을 안내해주는데, 우분투로 확인해보자. https://docs.docker.com/desktop/install/ubuntu/ Install Docker Desktop on Ubuntu Learn how to install, launch and upgrade Docker Desktop on Ubuntu. This quick guide will cover pr..
Nest JS 프로젝트 배포 자동화 하기 (1) - jenkins, webhook (2) 편 - https://whiporithm.tistory.com/104 (3) 편 - https://whiporithm.tistory.com/107 서론 본격적인 프로젝트를 앞서, 배포 자동화를 한 번 경험해보고 싶었다. 개발로도 벅찰 거 같아 배포에도 신경을 많이 쓰고 싶지 않기에, jenkins와 docker를 활용한 간단한 배포 자동화 구조를 만들어보려 한다. Nest 프로젝트를 배포한다고 했지만, 언어나 프레임워크가 중요한건 아니긴 하다. 어찌되었던, 아래는 내가 생각한 구조이다. 우선 코드를 push 하면 Webhook을 통해 이벤트를 보낸다 이후에 빌드서버에서 해당 코드를 가져와 테스팅 및 빌드를 진행하고, 도커 이미지화를 시킨다. 이미지 파일은 docker hub 에 올리고, 배포 서버..
MSA 아키텍쳐란? 서론 일반적으로 프로젝트를 개발하면 한 프로젝트 파일을 만들어서 관리한다. 이러한 일반적인 구조를 모놀리식 구조라고 하는데, 이와 다르게 서비스별로 프로젝트를 생성해서 이를 관리하는 MSA (Microservice Archtiecture) 구조도 존재한다. 대표적으로 아마존과 넷플릭스가 MSA를 사용한다고 알려져있다. 이전에 진행한 프로젝트를 MSA구조로 개발했는데 복습겸 정리해볼려한다. 모놀리식(Monolithic) vs 마이크로서비스(Microservice) Monolithic Architecture 모놀리식 구조는 한 프로젝트 파일에 모든 구성요소를 넣어 개발하는 구조를 의미한다. 전통적인 방법이다. 장점 상대적으로 운영하기 용이하다. => 프로젝트 파일이 하나이므로, 관찰 대상이 하나이다. 내부 ..
쿠키 / 세션 / 토큰(JWT) 의 차이는? 서론 개발하다보면 로그인을 구현할때가 많다. 로그인 구현하는거야 쉬우나, 해당 유저가 로그인이 된 유저인지, 아닌지를 판단하는게 중요하다. http는 기본적으로 stateless 프로토콜이기에 이전에 접속한 클라이언트의 정보를 기억하지 않는다. 따라서 요청때 판단을 해야한다. 간단하게 생각해보면 모든 요청때 유저 정보를 보낼 수가 있을것이다. (쿼리 스트링과 같은 형태로 ) 당연히 이 방법은 보안적으로도 안좋고, 모든 요청에 유저 정보에 대한 파라미터를 받아야 하므로 개발도 힘들어질 것이다. 이런 문제들을 해결하기 위하여 쿠키, 세션, 토큰 등의 방식이 등장했고, 이들을 활용하여 권한이 있는 유저인지 판단한다. 개발할때는 부랴부랴 찾아서 어떻게든 구현 하는 편인데, 개념이 헷갈려서 정리해볼려고 한다. 인..
[Typescript] Path alias (import 경로 단축) 코드리뷰를 받는데 Typescript를 사용한다면 import하는데 path alias 방식을 사용해보라고 조언 받았다. path alias가 무언가 했는데, 절대경로를 변수처럼 선언해서 그 경로를 줄여 간략하게 표현하는 방식이었다. 아래와같이 말이다. import myFile from "../../data/myFile import myFile from "@data/myFile" 파일을 import 하면 첫번째 처럼 ../../ 을 사용해서 상대경로로 파일을 찾아가서 import 하게 된다. 그러나 path alias를 사용해서 아래와 같이 나타낸다면 가독성 좋게 나타낼 수 있다. 내 프로젝트도 디렉토리가 많이 나누어져있기에 이 방법을 적용하면 좋겠다고 판단했다. path alias 적용 내 프로젝트의 ..