전체 289

풀스택 개발 프로젝트 준비하기 (1)

현재 풀스택 개인 프로젝트를 준비하고 있다. 어플리케이션 기반의 커뮤니티 앱이다. 서버와 어드민 페이지까지 만든 다음에 애플리케이션과 연결할 예정이다. 프로젝트의 목표는 다음과 같다. 개인 공부가 목표이다. 어드민 페이지를 통해 유저 관리가 되어야 한다. 앱스토어와 플레이스토어에 출시가 되어야 한다. Fcm을 통해 푸시 메시지를 제어한다. 앱에 공지사항과 강제 업데이트 같은 관리자가 외부에서 제어할 수단이 있어야 한다. 해당 목표를 이루기 위해서 기술스택을 찾고, 현재 제작 중이다. 백엔드 : NestJS : Typescript 기반으로 빠르게 작성하고 테스트가 가능하고 익숙함 ORM : Typeorm : 가장 많이 사용하고, 나중에 확장할 때 빠르게 할수 있다. DB : Postgres : 오픈소스, ..

Mermaid를 사용해서 ERD 작성하기

최근에 ERD를 작성할 일이 생겼는데, ERD 툴을 새로 사용하자니 매우 귀찮은 생각이 들었다. Markdown처럼 ERD도 코드 형식으로 사용할 수 있게 하면 좋겠다는 생각이 들어서 여기저기 찾아보다가, mermaid라는 좋은 오픈소스 프로그램을 발견했다. 문법도 비교적 쉬운 편에 속해서 빨리 익힐 수 있었다. 공식 홈페이지는 다음 주소에 있다. https://mermaid.js.org/ 빠른 사용법 공식 홈페이지를 보면 텍스트와 코드를 사용해서 시각화를 빠르게 할 수 있는 툴 이라고 광고한다. 기본적인 문법은 Markdown을 많이 참고했고, 기본 목표는 ERD가 아닌 다이어그램을 표시하는 것이 원래 목적이다. 여기서 응용하여 마인드맵, 타임라인, ERD, 파이 차트 등의 다양한 작업에 활용할 수 있..

IT 이야기 2023.04.24

Azure cli에서 oauth2 없이 바로 로그인하기

현재 프로젝트에서 docker image안에 azure cil을 설치하고, 해당 프로그램에 인자로 key값을 받는 작업을 수행했다. azure는 aws와 다르게 cli로 로그인 하기 위해서는 거의 무조건 web으로 연결해야 하는 로직이 있었다. oauth2를 사용해서 보안 강화에 초점을 맞춘 것 같다. 여하튼 해당 플로우를 구현하기 위해서 방법을 찾아봤는데, aws와 다른점이 있어서 방법을 찾을때 약간 고생좀 했다. 구현하기 기존의 로그인 플로우를 확인하면 다음과 같다. az login 실행 (--use-device-code 도 비슷한 플로우) 웹사이트 오픈 로그인 인증 후 cli로 전환 로그인 완료 여기서 웹사이트를 오픈하는 과정 자체가 보안에는 좋을지 몰라도 사용성에서는 상당히 별로인 것 같아 보였다..

AKS에서 파드가 네트워크에 연결하지 못할 때

현재 AKS에 NestJS 파드를 올려야 하는 상황이다. 분명히 네트워크 엔드포인트 잘 맞추고, 서비스 잘 올렸는데 자꾸 백엔드에서 DB에 접속을 하지 못하는 이슈가 있었다. 현재 이 상황에서 내가 해본 것들은 다음과 같다. Service 포트 확인하기 Deployment, Service 라벨 확인하기 Pod에 접속해서 curl 날려서 DB 연결 확인하기 Azure 가상 머신에 접속하여 이미지 빌드 후 푸시하기 원격 저장소에 있는 이전 이미지 배포하기(이건 잘됨) 클러스터 처음부터 다시 만들기 CNI 설정 처음부터 다시하기 이정도의 엄청난 삽질을 하고 있었다...그런데 CRI에 대해서 한번 확인해 보라고 주변 분께서 제안해 보셨다. 그래서 CRI에 대해서 잠깐 알아본 이후 바로 확인해 보았다. CRI C..

쿠버네티스의 Network Solution에 대하여

쿠버네티스는 컨테이너 애플리케이션을 제어할 수 있는 컨테이너 오케스트레이션 프로그램 중 하나이다. 현재 컨테이너 오케스트레이션 도구 중에서 독보적인 위치를 지니고 있으며, MSA를 사용하는 기업들은 거의 다 쿠버네티스를 사용하고 있다. 쿠버네티스는 각 컨테이너를 다루는 도구이므로, 당연히 그와 관련된 네트워크 설정들이 있을 것이다. 쿠버네티스에서 기본적으로 제공하는 네트워크에 대해서 간단히 알아보자. 쿠버네티스의 기본 네트워크 쿠버네티스의 구조에 대해서 간단히 알아보자. 쿠버네티스의 가장 작은 단위는 파드이다. 한 개의 도커 컨테이너라고 보면 된다. 파드들을 관리하는 상위 단위는 노드이다. 노드는 한 대의 pc라고 생각하면 된다. 이러한 노드들을 관리하는 것이 쿠버네티스 클러스터이다. 그림으로 보면 다음..

Terraform 훑어보기

이번에 회사에서 terraform을 사용해서 간단히 정리해 보았다. Terraform이란 클라우드, 온프레미스 리소스들을 코드로 정의할 수 있는 도구이다. 컴퓨팅 리소스, 스토리지, 네트워킹 리소스, DNS, SaaS 등의 다양한 구성 용소를 코드로 정의할 수도 있다. 테라폼 API를 통해서 앞에서 말한 리소스들을 지정할 수 있다. 코드로 정의하기 때문에 기존의 코드를 작성하는 것처럼 협업이 가능하고 버전 관리가 용이하다. 테라폼의 워크플로에는 주로 3개의 단계가 있다. 먼저 코드를 작성하는 write 단계가 있다. 말 그대로 리소스를 코드로 작성한다. 두 번쨰는 plan이다. 기존에 있던 인프라를 기반으로 이후 변화될 계획을 구상한다. 구상하는 과정은 테라폼 자체적으로 알아서 순서를 정한다. 마지막으로..

유용한 쉘 스크립트 시나리오 정리

쉘 스크립트의 exit code 분리하기 # 예시 : azure cli 로그인 여부 확인하기 if az account show &>/dev/null; then echo "Azure Logined!" else echo "You need to login Azure!" fi &>/dev/null 을 붙이면 쓰레기통(/dev/null)에 출력 결과물이 들어가고, exit code만 남게 된다. 마지막으로 실행한 스크립트의 exit code 확인하기 $? 변수값 만들어서 저장하기 # nowGroup에 group이라는 변수를 저장 후 출력한다 nowGroup=$(echo "group") echo $nowGroup $([본문])을 통해서 출력값을 저장한다. 폴더의 존재 확인하기 # 폴더 존재 확인 FOLDER_NAM..

오픈소스에 대한 고찰

지금 다니는 회사에서 Typeorm에 관해서 대화를 나눈 적이 있었다. 다들 자기 의견에 대해서 말을 하는데, typeorm의 최초 개발자가 typeorm을 주도적으로 개발하지 않아 곧 deprecated 된다는 얘기를 들었다. 사실 nodejs 서버 진영에서는 (적어도 한국에서는) ORM 프로그램 중에서 가장 많이 쓰이는 것이 typeorm이라고 알고 있었다. 하지만 지속적인 지원이 없는 프로그램을 가장 많이 쓴다는 것이 둘 다 모순이 된다고 생각했다. 그래서 이것에 대해서 궁금증이 생겨서 나름 내용을 찾아봤다. 일단 typeorm이 많이 쓰이는 이유를 찾아보니 오래되기도 했고 typescript 지원에다가 다른 orm에서 주로 쓰는 패턴과 비슷해서 적응이 빠른것이 장점인 것 같았다. 하지만 typeo..

IT 이야기 2023.02.21

local에서 https로 개발하기

개요 로컬에서 개발할때는 주소가 localhost:xxxx 형식으로 주어진다. 하지만 해당 주소는 SSL인증서가 없기에 기본적으로 http 프로토콜로 통신을 하게 된다. 이렇게 개발을 하게 되면 HTTPS, SSL, TLS, cookie 등의 기술을 테스트하기에 어려움이 있었다. 그래서 로컬에서 HTTPS 개발을 할 수 있게 하는 도구들을 찾아보던 중, 좋은 도구를 발견했다. MKCert 일단 HTTPS를 사용하기 위해서는 인증 기관에서 인증된 TLS 인증서가 필요하다. 여기서 서명된 인증서를 생성하고, 애플리케이션에 적용시켜 실행을 하면 HTTPS로 실행이 된다. 해당 인증서는 mkcert를 사용해서 만들 것이다. https://github.com/FiloSottile/mkcert GitHub - Fi..

IT 이야기 2023.02.10

ts-jest 설치 안되는 에러 해결

개요 오늘 ts-jest 라이브러리를 새로 받고 있던 도중, 진행이 안되는 것을 확인. 여기저기 검색해도 답이 잘 보이지 않았다. 하지만 여러가지 상태를 종합해본 결과, kt 통신망을 사용할 때 ts-jest가 다운로드가 안 되는 것을 발견. 아래는 해당 버그와 관련된 이슈이다. 현재 2023년 2월 1일 기준으로도 다운로드가 안된다. https://github.com/kulshekhar/ts-jest/issues/3992 [Bug]: npm install hang · Issue #3992 · kulshekhar/ts-jest Version 27.1.4 Steps to reproduce init new project cd ~ mkdir ts-jest-hang-test cd ts-jest-hang-test..

IT 이야기 2023.02.01