본문 바로가기
반응형

Javascript26

Lerna와 yarn-workspace를 활용한 Mono Repo (Typescript & Jest) 환경 구성하기 보통 하나의 도메인 시스템을 운영할때 프로젝트 하나만으로는 해결이 안될 때가 많습니다. 이를테면 다음과 같은 경우인데요. 어떤 분은 이걸 보고 MSA 라고 하시기도 하는데요. API / Admin / Batch 가 분리된걸로 절대로 MSA 라고 하진 않습니다. 하나의 주문시스템을 위해 3개의 하위 프로젝트가 있는 상태입니다. 주문 어드민 주문 API 주문 배치 이 3개는 주문시스템을 이루는 프로젝트들입니다. 배포되는 서버도 다르고 다른 코드 베이스를 가지고 있는데요. 하지만 이들이 공통적으로 필요로 하는 Order Entity는 어떻게 관리해야할까요? npm 저장소에 올려서 사용하기에는 실시간성이 떨어집니다 모든 하위 프로젝트들이 동일한 파일을 복사해서 관리하는건 유지보수가 굉장히 힘듭니다. 그래서 이런.. 2021. 7. 13.
1. Docker Compose로 Nodejs 개발/배포환경 구성하기 - Dockerfile로 구성하기 NodeJS와 같은 스크립트 언어에서는 개발환경을 구성하고, 이를 팀으로 확대하는데 많은 어려움이 있는데요. 일반적으로는 다음과 같은 문제점들이 있습니다. 로컬 PC의 Node버전을 매번 프로젝트 환경에 맞춰 변경해야한다. 때때로 패키지 설치가 막힌다. 로컬 컴퓨터에 이미 존재하는 환경과 꼬였다. 막상 배포를 했더니 개발 환경과 서버 환경이 같지 않아서 문제가 발생했다. 프로젝트에 새로운 사람이 합류하면 그 사람의 개발 환경에 따른 문제점이 발생한다. 그래서 이런 문제점들을 Docker Compose를 통해 개선하고 실제 배포까지 한번 진행해보겠습니다. 이 컨텐츠는 인프런 강의인 도커 쓸 땐 필수! 도커 컴포즈 에서 많은 영감을 얻었습니다. 강의 제작자이신 너굴 님의 허가하에 작성하였음을 먼저 말씀드립니.. 2021. 7. 3.
프론트엔드 모니터링에서 Script error. 만 나올때 프론트엔드 모니터링을 보다보면 다음과 같이 Script error. 만 나올때가 있습니다. 나머지 에러들은 정확하게 에러가 노출되지만, 특정 케이스에 한해서 Script error. 만 나오게 되는 것인데요. 왜 모니터링에서는 Script error. 만 나오며, 이를 해결하기 위해선 어떻게 해야하는지 알아보겠습니다. 1. 배경 소개 예를 들어 다음과 같은 sdk.js 파일을 사용하는 웹 페이지가 있다고 가정해봅니다. sdk.js function foo() { console.log($('#a').text()); } index.html test 코드는 간단합니다. sdk.js 와 jquery를 호출하고, 이를 index.html이 sdk.js의 foo funciton을 호출 sdk.js는 jquery를 의.. 2021. 6. 20.
[Typescript] 1. TypeORM에서 페이징 API 만들기 - 기본페이징 기능 웹 서비스를 구현하는 과정에서 페이징 API는 가장 기본적인 기능인데요. Java 기반의 페이징 구현 코드는 많은데, Typescript 와 TypeORM 의 구현 코드가 많지 않아 작성하게 되었습니다. 현재 Typescript 와 TypeORM 스펙으로 웹 서비스를 구현하신다면 한번쯤 참고해보셔도 좋을것 같습니다. 전체 코드는 Github에 있습니다. 여기서는 기본적인 페이징에 대해서만 소개 드리는데요. 고성능의 페이징 API가 필요하다면 이전의 포스팅들을 참고해주세요. 1. NoOffset 사용하기 2. 커버링 인덱스 사용하기 3-1. 페이지 건수 고정하기 3-2. 첫 페이지 조회 결과 cache 하기 1. 프로젝트 구조 사용된 대표적인 패키지는 다음과 같습니다. Typescript TypeDI DI.. 2021. 6. 10.
nodeenv를 활용한 프로젝트별 node 가상 환경 관리 Node에는 nvm 이나 n을 통해 동적으로 로컬 PC의 Node 버전을 변경할 수 있는데요. 다만 애초에 여러 프로젝트를 서로 다른 버전으로 동시에 사용하는 경우에는 매번 버전을 변경하는 것도 상당히 귀찮은 일입니다. 이를테면 다음과 같은 경우입니다. 회사의 프로젝트는 node 12를 쓴다 개인 프로젝트는 최신 버전인 node 16을 쓰고 싶다. 주말마다하는 사이드 프로젝트는 14를 쓰기로 했다. 이렇게 될 경우 매번 PC의 node 버전을 변경해야하는데요. 출근 전에는 node 16으로 출근 하면 node 12로 행여나 회사내 node 프로젝트들도 버전이 서로 다르면 이때도 계속 프로젝트 실행때마다 nvm 이나 n으로 버전을 변경해야합니다. 퇴근 하면 다시 node 16으로 주말 에는 node 14로.. 2021. 5. 2.
TypeORM에서 Camelcase 필드를 Snake 컬럼에 매핑하기 일반적으로 PostgreSQL을 비롯한 Database의 컬럼 명명 (Naming) 규칙은 snake, 애플리케이션 코드의 필드 명명 규칙은 Camelcase 입니다. Entity Table 둘 간에 명명 규칙이 달라 일반적인 ORM 들 (JPA등) 에서는 이들간의 불일치 해소를 위한 명명 전략 (Naming Strategy)를 지원하는데요. TypeORM에서는 이 기능이 공식적인 지원이 없어서, 별도의 패키지를 사용해야만 합니다. 해결책 npm 패키지 중 typeorm-naming-strategies 를 사용하면 이 문제를 아주 쉽게 해결할 수 있습니다. 먼저 아래와 같이 프로젝트 패키지에 포함시키시고, npm install typeorm-naming-strategies --save TypeORM 전역.. 2021. 4. 27.

728x90