
개요 몇 천개의 url을 검사하는 시스템을 개발해야 하는 일이 생겼다. 간단하게 scheduler를 사용해서 RestTemplate으로 통신 후 StatusCode에 따라 검수하는 시스템을 만들었다. 로컬에서 테스트한 결과 대략 40분이 걸렸다. 시간이 너무 오래걸린다 느껴 url를 10개 list로 나눠서 multi-threading 으로 진행해서 시간을 15분으로 단축시켰다. 하지만 multi-thread로 구현하면서 부족함을 느껴 process/thread를 공부하고 글을 작성하게 되었다. Process OS로 부터 자원(메모리) 를 받아 실행하는 프로그램이다. 실질적으로 작업을 수행하는 것이 Thread 이다. 모든 Process는 최소한 하나 이상의 Thread가 존재하면, 둘 이상의 Thre..

나오게 된 배경 자바스크립트가 발전하면서 다양한 framework가 나오게되면서 front-end/back-end 둘 다 다양하게 활용할 수 있게 되었다. front-end는 Angular,React,Vue 등 다양한 프레임워크들이 빠르고 유연하고 확장성있게 개발할 수 있도록 지원한다. back-end도 express.js,node.js 프레임워크, 또한 다양한 라이브러리들을 지원한다. 하지만, 유연성있는 아키텍쳐를 설계할 수 있는것은 없다. 그런 문제점을 해결하기 위해 나온게 NestJS이다. NestJS의 가장 큰 장점은 아키텍쳐를 유연성있고, 유지보수가 쉬우며, 테스트하기 쉽고 결합도 루즈하게 개발할 수 있게 만들어준다. 간단한 게시판 API를 만들면서 느껴보자. NestJS 설치하기 밑에 명령어 ..

SOLID 란? SOLID 원칙은 객체지향적인 디자인이다. SOLID 원칙은 개발자들이 유지보수성이 뛰어나고,가독성이 좋고, 유연성있는 소프트웨어를 개발하기 위해 필요한 원칙이다. 어플리케이션이 확장되고 커질수록 복잡도는 증가한다, 개발자는 SOLID원칙을 통해 복잡도를 감소시켜 후에 유지보수하기 좋아지며 탄탄한 어플리케이션을 만들 수 있다. Single Responsibility Principal(SRP) - 단일 책임 원칙 이란? 1개의 클래스 는 1개의 책임 만 가지고 있어야한다. 그 이유는 어플리케이션이 성장하면서 클래스가 하나의 책임과 행동을 갖고 있으면 유지보수 측면에도 효율성이 향상하고 변경으로 인한 side-effect 가 줄어든다. 장점 테스트 - 테스트 케이스가 줄어든다 결합도 감소 -..

객체란 무엇인가? 객체는 상태(필드)와 동작(메서드)를 가진다. 객체는 클래스의 인스턴스를 나타내며 메모리의 공간을 차지한다. 클래스란 무엇인가? 객체를 생성하기 위한 템플릿 또는 청사진입니다. 클래스는 인스턴스화하기 전까지는 메모리의 힙 영역을 소모하지 않는다. 추상화란 무엇인가? 사용자와 관련있는 내용만 노출하고 나머지 세부 내용은 숨기는 개념입니다. 추상화를 통해 어플리케이션이 일을 수행하는 방법에 집중이 아닌 수행하는 일 자체에 집중한다. 내용을 노출하는 복잡성을 줄이고 코드의 재사용성을 높이며 코드 중복을 방지함으로써 낮은 결합도와 높은 응집도를 유지한다. public interface car { public void speedUp(); // 속도 높이기 public void slowDown(..