/images/avatar.png

Node.js에서 OOP 기반 리포지토리에 적용한 싱글톤 디자인패턴

<표지 사진출처: Unsplash)> Project Tech Stack Overview Language: TypeScript Platform: Node.js Web Framework: Express.js Database: MySQL ORM: TypeORM Cloud Storage: AWS S3 Development Tool: WebStorm Version Control and Issue Tracking: GitHub Issue 얼마 전, 모든 코드를 OOP로 리팩토링한 뒤, 한 문제를 발견했다. 리포지토리 역시 클래스 기반으로 내보내고 있었는데 때문에 각각의 서비스 로직에서는 이를 new Class() 형태로 불러오면서 단일 인스턴스가 아닌 여러 인스턴스의 생성 위험이 있었다. OOP 리팩토링 전, 함수기반에서는 최초 호출된 datasource 인스턴스 하나를 계속해서 사용하기에 문제가 없었는데 이 부분을 간과했다.

Node.js와 TypeORM에서 겪은 트랜잭션 롤백 문제 - 원인 분석과 해결 방법

<표지 사진출처: Unsplash> Project Tech Stack Overview Language: TypeScript Platform: Node.js Web Framework: Express.js Database: MySQL ORM: TypeORM Cloud Storage: AWS S3 Server: AWS EC2 Development Tool: WebStorm Collaboration Tool: Slack Version Control and Issue Tracking: GitHub Issue 문제 상황 프로젝트에서 발견된 주요 문제는 TypeORM을 사용하는 Node.js 환경에서 트랜잭션 관리와 롤백이 제대로 이루어지지 않는 것이었다. 이는 게시글을 등록하는 로직에서 발견되었으며, 예기치 않은 오류가 발생했을 경우 데이터베이스에 불필요한 데이터가 잔존하는 결과를 초래했다.

Github Pages에 Cloudflare 도메인 연결 중 리다이렉션 실패가 난다면

문제상황 구글이 도메인 사업을 매각한 후, 도메인 이전을 차일피일 미루다 최근에서야 Cloudflare로 도메인을 이전하였다.1 모든 DNS 역시 정상적으로 이전하였고, 메일서비스를 비롯한 다른 서비스들도 정상작동함을 확인하였다. 그런데 갑자기 해당 도메인의 주소가 정상적으로 작동하지 않는 문제가 생겼다. 브라우저에서 20회 이상의 리다이렉션으로 페이지 불러오기 실패 해결방법 Cloudflare side menu - SSL/TLS - 개요 : SSL/TLS 암호화 모드를 가변에서 전체로 변경했더니 문제 해결! 그런데 왜?? 현재 다른 설정은 항상 HTTPS 사용이 체크되어있는데 이 설정과 충돌해서일까?

AWS EC2 서버에 HTTPS 적용하기(1) - Route53과 로드밸런서 이용

관련 글 AWS EC2 서버에 HTTPS 적용하기(2) - Cloudflare 이용 방법 팀 프로젝트로 백엔드 서버를 EC2에서 배포하여 사용중인데 여기에 HTTPS를 적용하여 보았다. 적용방법은 몇가지가 있지만 크게 AWS의 Route53을 이용하는 방법과 도메인서비스의 프록싱을 이용한 방법 등이 있다. 그 중 첫번째 방법에 대해 기술한다. 겁먹지 말기 AWS내에서 각 서비스를 이리저리 다니며 무언가를 자꾸 생성하고 또 세팅하다보니 자칫 어렵다고 지레 겁먹기 쉬운데 실제로 해보면 생각보다 간단하고 쉽다. 구글링을 하다보면 여러 관련 글이 있는데 아래 참고한 2개의 웹페이지가 가장 잘 설명되어있다.

error log - jest.spyOn()에서 재사용함수에 대한 모의 불가

사용환경 : Node.Js, Express 언어 : typeScript 테스트 프레임워크 : Jest 상황 Abstract 같은 파일 (모듈) 내에 있는 함수의 재사용시, 테스트 코드를 작성하는데 모의하기가 상당히 까다롭고 불편함. 특히 테스트 코드가 지나치게 지저분해짐 user.service.ts 파일 내부 다음은 user.service.ts 파일의 내부 코드 요약이다. 초점을 맞춰 볼 곳은, updateUserInfo 함수 내부에서 checkDuplicateEmail 함수와 checkDuplicateNickname 함수가 재사용되고 있다. // ... const checkDuplicateEmail = async ( email: string ) => { ... } const checkDuplicateNickname = async ( nickname: string ) => { .

Webina 참여 회고 - 원티드 주최 'ChatGPT 시대에 구성원의 역량을 어떻게 육성할 것인가?'

<표지 사진출처: Unsplash> 지난 월요일 저녁 “ChatGPT 시대에 구성원의 역량을 어떻게 육성할 것인가?” 라는 아주 흥미로운 주제의 웨비나가 있어 참여하였다. 비단 HR 관계자가 아니더라도 각 팀의 리더 또는 구성원이라면, 또는 조직에 속해있다면, 그리고 발빠르게 변화하는 현시대적 흐름에서 자기 스스로를 육성하는 방면에서도 몹시 듣고 싶은 주제였다. 현재 Chat GPT를 필두로 한 AI가 대다수의 업계에 미치는 파급효과는 어마어마하다. OpenAI로 인한 영향, 방법 등에 관한 콘텐츠가 마구잡이로 쏟아져나오고 있는 현재이다. 이러한 시대적 상황에서 OpenAI가 조금이라도 나의 업무에 미치는 영향이 있다면 이번 웨비나는 쉽게 지나치기 힘든 주제였다.