🐳 Docker ? 사전적 의미로는 항구에서 일하는 사람을 말한다. 그렇다면 왜 이런 단어를 사용했을까? Docker를 이해하기 위해서는 먼저 그 등장 배경을 이해해야 한다. 과거의 개발자들은 협업을 하는데 어려움을 겪었다. 서로 다른 컴퓨터에서 작업하기 때문에 버전, OS 등이 다르기 때문에 발생하는 다양한 문제들이 있었기 때문이다. 이러한 문제를 해결하기 위해 등장한 것이 "가상 환경"이다. 가상 환경은 OS 수준의 추상화를 통해 한 개의 컴퓨터에서 여러 OS 를 실행할 수 있게 해주었다. 이를 통해 협업을 하려는 개발자들은 동일한 환경을 구축할 수 있게 되었다. 하지만 이러한 가상환경은 새로운 문제를 야기했다. 가상환경은 OS 수준의 가상화를 하기 때문에 무겁다는 단점이 있었다. OS 자체가 무겁기..
이 포스팅은 로버트 C. 마틴 의 "Clean Code" 라는 책을 요약한 내용입니다. 🐳 명명법은 왜 중요할까 ? 클린 코드는 하나의 정답이 존재하는 것이 아니다. 굵직한 개발자들도 정의하는 방법이 다양하다. 하지만 모두가 추구하는 바는 비슷하다. 바로 가독성이다. 그것을 어떻게 표현하는지에 따라 단어선택의 차이점이 있을 뿐이다. 이러한 측면에서 명명법은 중요하다고 볼 수 있다. 변수/메소드/클래스 등이 어떤 일을 하는지 명료하게 확인할 수 있기 때문이다. 그렇다면 "Clean Code"에서 소개하는 명명법에 대해 알아보자 🐳 명명법 1. 의도를 분명히 밝혀라 2. 그릇된 정보를 피하라 3. 검색하기 쉬운 이름을 사용하라 4. 클래스 이름은 명사로 메소드 이름은 동사를 사용하라 5. 기발한 이름을 사용..
🐳 문제 typeORM이 0.3 버전을 출시하면서 기존에 레포지터리에 의존성을 주입 해주던 @InjectRepository() 데코레이터가 사라지게 됐다. 그래서 TypeORM 0.3 버전에서는 어떻게 레포지터리 패턴을 사용하는지 TypeORM 공식 문서를 통해 확인해 보았다. 아래는 TypeORM 공식문서에서 발췌한 Repository 패턴을 구현하는 방법이다. import { User } from "./entity/User" const userRepository = dataSource.getRepository(User) const user = await userRepository.findOneBy({ id: 1, }) user.name = "Umed" await userRepository.save(u..
Typescript에서 Jest 사용하기 Jest 자체는 .js file 만을 컴파일 하기 때문에 Typescript에서 Jest를 사용하기 위해서는 몇 가지 추가적으로 해줘야 할 것들이 있다. 몇 가지 모듈 설치와 config file 설정을 통해 간단하게 Typescript에서 Jest를 사용할 수 있다. 0. 가정 설치에 앞서 Typescript 설정은 끝난 상태라고 가정하겠습니다. 1. ts-jest module 설치 npm install --save-dev jest ts-jest @types/jest ts-jest : ts-jest는 .ts file을 Jest로 실행시킬 수 있게 만들어 주는 모듈이다. @types/jest : @types/jest 는 Typescript에서 사용되는 다양한 Ty..
[Node.js] - TypeORM + TypeScript + Express 개발환경 세팅 🐳 Layered Architecture의 구성요소 Layered Architecture에는 크게 네 가지 Layer가 있습니다. 1. Presentation Layer 2. Business Logic Layer ( Domain Model ) 3. Persistence Layer ( Data Access Layer ) 4. Database Layer 각각의 계층과 역할에 대해서는 이 링크에서 설명해 놓았습니다. 이론적으로는 레이어드 아키텍쳐에 대해서 이해하겠으나 실제로 적용하는 것은 다른 문제였다. Entity, Repository, Service, Controller 등 다양한 개념이 등장했고 이것들이 어느 계층..