이번글은 Nest JS로 배포를 하면서 겪었던 경험을 적은 글입니다. 단순 기록을 위한 글입니다. Node를 통해 배포를 처음보아서 적었습니다. DockerFile Nest를 사용하면서 DockerFile에서 초기서버 이미지이다. alpine으로 설정하게 되면 bcrypt가 동작안하게 되는경우가있다. 이런 현상은 왜 일어나느냐 저희의 개발환경컴퓨터와 alpine의 내부 구조가 다르기 때문이다. alpine은 가볍게 만들어져서 어느게 없는경우가있다. 그래서 bcrypt경우는 따로 rebuild를 해줘야한다. rebuild로 bcrpyt 패키지를 alpine컴퓨터에 맞춘것이다. install package.json을 통해서 node_modules를 생성하는 명령어이다. build Nest는 TS기반이다. 이..
이번글은 터널링 하는방법을 잊지않기위해 단순 코드 저장입니다. Bastion Host Bastion은 수호자, 보루 요새라는 사전적 의미를 가집니다. 구축한 인프라 또는 네트워크의 입구에서 허용된 사람만 출입할 수 있는 역할을 수행하는 녀석입니다. 즉 맨 입구에서 게이트역할을 하는 서버를 Bastion호스트 또는 Bastion서버 라고 부릅니다. 왜 사용하지? AWS 리소스 구성 후 관리자가 VPC 외부에서 Private Subnet에 접근해야 하는 경우 직접 접근할 수 있는 방법이 없는데, 이 때 Bastion Host를 거쳐서 Private Subnet에 접근할 수 있습니다. 저의 문제상황 로컬에서 Dev 디비는 접근이 가능했지만 QA환경에서는 접근을 못하게되어 DB Connection생겼습니다. 왜..
이번 글은 단순히 제 생각을 정리한 글입니다. 명령형 프로그래밍 명령형 프로그램은 컴퓨터가 수행할 명령들을 순서대로 써 놓은 것이라고 합니다. 상세하게 어떻게 해서 어떻게 해 라는 과정들이 적혀 있습니다. public class ImperativeExample { public static void main(String[] args) { int sum = 0; for (int i = 1; i acc + curr, 0); console.log(`Sum: ${sum}`); 참고자료 : https://dmdwn3979.tistory.com/14
안녕하세요 이번글은 TS에서 정적펙토리 메서드를 어떤식으로 사용하는지 스스로 추측해본 글입니다. 자세한 정적펙토리 메서드와 빌더패턴에 대한 자세한 내용은 빠졌습니다. 단지 사용하는 Best Practice에 대해서 이야기 합니다. 들어가며 일단 자바진영에서는 이펙티브 자바책에서도 정적펙토리 메서드를 권장합니다. 정적 펙토리 메서드란 무엇인가? 왜 사용하는가? 정적 펙터리 장점 1. 의미있는 이름을 부여할 수 있습니다 : 생성자 같은경우는 이름 그대로 가지기 때문입니다. 반면 정적 펙토리 메서드는 의미있는 이름을 가질 수 있습니다. 2. 생성자 로직을 깔끔하게 유지할 수 있습니다 : 만약 모든 객체가 생성되는 시간을 기록한다면 이 로직을 생성자에 넣으면 단일 책임 원칙을 위반하게 된다는 것입니다 등등 다양..
인프라를 다루어야하는 일이 생겨서 빠르게 AWS용어를 정리하고자 글을 적었습니다. 내용이 다소 빈약할 수 있습니다. 가용영역(AZ) 1개 이상의 데이터 센터를 논리적 그룹으로 묶어 놓은 인프라 입니다. 여러개를 묶은 데이터 센터입니다. 리전(Region) 3개 이상의 가용영엯을 논리적으로 묶음 입니다. 데이터 센터를 그룹한걸 또 그룹한 것입니다 ELB를 사용할 때 왜 AZ를 2개 선택해야하는가? 데이터센터 하나만 있을 경우 센터에 장애가 나면 전체 시스템이 마비가 됩니다 그래서 최소한 2개이상의 가용역을 사용하게 되면 각각의 가용영역에 ㅇ니스턴스를 두고 로드밸런서로 분산하면 한쪽이 무너지더라도 전체시스템이 붕괴되진 않습니다. systemctl enable nginx enable은 껐다 켜지더라도 자동으로..
Promise all Promise.all() 은 여러 개의 프로미스(Promise) 를 비동기적으로 실행한다. 따라서 여러 개의 Promise 처리를 비동기적으로 실행하고자 할 때, 사용할 수 있다. await aFuncetion(); await bFuncetion(); await cFuncetion(); 다음과 같이 실행순서에 상관없는 경우 비동기로 실행할 때 Promise.all을 사용하면 성능이 더 올라간다. 위에같은 코드에서 Promise.all을 사용하지 않는다면 실행시간은 (a+b+c) 순서대로 실행되어 실행시간이 정해지지만. Promisea.all을 사용한다면 (a,b,c)중에서 가장 오래걸리는 함수의 시간이 실행시간으로 됩니다 객체할당 자바와 다르게 자바스크립트에서는 타입스크립트를 사용..
이글은 AWS를 직접실습해본 경험을 기록하기 위한 글입니다. 데이터베이스 복구방법 1. RDS - 데이터베이스 로 이동한다 2. 특정시점으로 복구하기로 하여 최근이나 사용자 지정날짜를 정한다 3. 그리고 나머지 옵션을 한다 사내에서는 업데이트나 복구시간을 정해둔 지침이있는데 그걸로 설정한다 4. 로그 내보기도 중요하다 cloud watch로 보내진다 주로 감사로그를 제외하고 해줄거같다 5. 그리고 제일 중요한 삭제방지 설정해준다 다음에는 스냅샷이나 AWS Backup을 이용한 복구한 내용을 추가해보겠습니다
export하면 다른 파일에서 사용할 수 있는데 여러개를 한다면 어떻게 해야하는지 궁금했다 GPT가 이랬다 모듈에서 여러 개의 모델을 export할 때, 일반적으로는 객체로 감싸서 export 하는 것이 일반적입니다. 이렇게 하면 다른 파일에서 해당 객체의 속성을 사용하여 필요한 모델에 접근할 수 있습니다. // person-model.js const mongoose = require('mongoose'); const PersonSchema = new mongoose.Schema({ name: String, age: Number, }); const AnimalSchema = new mongoose.Schema({ species: String, color: String, }); const Person = ..
이번 연도 3월에 취업해서 개발자로서 커리어를 시작하다가 이직을 하게 되어 바쁘게 지나갔는데 벌써 23년의 끝이다. 저에게는 조금 더 특별하게 생각되는 한 해였습니다 3월 ~ 7월 (퇴사) 23년의 목표는 빠르게 취업을 해서 커리어를 쌓아가고 싶었다. 그래서 아무렇지 않게 취업이라는 것만 생각해서 여건이 좋지 않은 회사에 들어가게 되었다. 들어가 보니 너무 바쁘게 달려오기만 했다. 서비스를 출시하기 위해 입사하고 3주를 빼고는 퇴사하기 전날까지 매번 아침에 출근하면 저녁 11시 이후로 가는 날이 많아졌다. 그러다 보니 체력적으로도 그리고 내 삶이 없어지며 추가적으로 회사의 재정적으로도 안전하지 않게 되어 퇴사를 하게 되었다. 8월 퇴사하고 3주가량은 조금 휴식을 가지게 되었다. 하고 싶었던 운동을 위해 ..
Dto에 NoargsConstructor를 사용하는 이유 코드를 작성하다보면 프로젝트를 오랜만에하면은 Dto에는 기본생성자를 생성해줘야하는지 매번 헷갈리며 이유를 제대로 알아보고자 합니다. @Data @NoArgsConstructor public class SignUpRequestDto { private String email; private String password; } 우선 생성자가 필요한 이유를 알기위해선 스프링이 어떻게 Dto를 JSON으로 매핑하는지 원리를 알아야합니다. 스프링이 매핑하는 원리는 Jackson라이브러의 ObjectMapper를 사용하여 JSON으로 매핑합니다. 여기서 ArgumentResolver는 JSON데이터를 객체로 변환하기 위해서 MessageConverter가 사용됩..