HTTP란 HTTP(HyperText Transfer Protocol), HTML 문서와 같은 리소스들을 가져올 수 있도록 해주는 클라이언트-서버 프로토콜이다. 보통 브라우저인 클라이언트에 의해 전송되는 메시지를 요청(requests), 그에 대해 서버는 요청을 처리하고 응답(responses)이라고 부르는 응답 메시지를 제공한다. 요청과 응답 사이에는 게이트웨이 또는 프록시 등이 있을 수 있다. 요청 HTTP 메서드 Path: 가져오려는 리소스의 경로 HTTP 프로토콜의 버전 서버에 대한 추가 정보를 전달되는 선택적 헤더들 응답 HTTP 프로토콜의 버전 요청의 성공 여부와, 그 이유를 나타내는 상태 코드 상태 코드의 설명을 나타내는 설명 메시지 HTTP 헤더들 가져온 리소스가 포함되는 본문 출처 아래의..
들어가며 최근 DR 시스템을 구축해야 하는 이슈가 있었는데 배포 환경에 DR을 추가하고 세팅하는 작업을 맡게 되었다. 작업 중 angular를 사용하는 client와 nest를 사용하는 middleware의 빌드 코드가 다른 것을 보고 의문을 가지게 되었다. * DR(Disaster Recovey)란? 재난 또는 각종 요인으로 인해 서비스나 시스템이 중단됐을 경우, 이를 정상화시키는 행위 문제의 코드 // Angular package.json "build:prod": "ng build --configuration=prod" // NestJs package.json "build": "nest build" 왜 nest는 빌드할 때 환경변수를 사용하지 않을까? 🤔 Angular의 경우 프로젝트를 빌드할 때 -..
들어가며 채용 공고 우대사항에서 자주 보이는 "MVP 단위 개발 프로세스에서의 개발 경험이 있는 분"이라는 문구. MVP란 뭘까? 에자일(Agile)과 함께 자주 언급되는 MVP를 알아보자. MVP란? "Minimum Viable Product". The Lean Startup의 저자인 Eric Ries에 의해 널리 알려진 개념으로 최소한의 기능만 실행 가능한 제품을 뜻한다. 핵심 가치를 시장에 빠르게 전달하기 위해 가장 중요한 기능만 담은 제품의 기본 버전을 의미한다. MVP 프로세스 아이디어 도출 고객이 원하는 것은 무엇인가? 그들의 문제점은 무엇이며 어떻게 해결할 수 있을까? 정말 필요한 기능과 이후에 추가해도 상관없는 기능을 구분한다. 제품 제작 MVP 출시 시장 반응 테스트 피드백 수렴 정식 제..
TL;TR 의존관계란: B 클래스가 바뀔 때 A 클래스가 영향을 받는다는 것 DI(의존성 주입)이란: 클래스 간 의존관계를 외부에서 결정하고 주입하는 것 IoC Container란: 자동으로 의존성을 주입하기 위한 프레임워크 Dependency 의존관계란 “A가 B를 의존한다.” B의 기능이 추가 또는 변경되거나 형식이 바뀌면 그 영향이 A에 미친다. 즉, B 클래스가 바뀔 때 A 클래스가 영향을 받는다는 것. class Programmer() { private coffee: Coffee; public constructor() { this.coffee = new Coffee(); } public startProgramming() { this.coffee.drink(); } } 위 코드와 같이 Progra..
RDD(Responsibility-Driven Design)객체의 책임과 협업에 초점을 두는 책임 주도 설계로 시스템의 동작을 명확하게 이해하고 모델링 되는 객체의 실제 책임과 일치하는 설계를 지향한다.특징책임: 객체는 특정 작업이나 동작을 담당한다. 입력 처리, 계산 수행, 상태 유지 또는 다른 개체와의 상호 작용이 포함될 수 있다.협업: 원하는 시스템 동작을 달성하기 위해 객체 간의 협업을 촉진한다. 객체는 정보를 요청 또는 제공하거나 작업을 수행하기 위해 메시지를 전송하여 통신하고 함께 작업한다.메시지 전달: 객체는 메시지 전달을 통해 서로 통신한다. 메시지 전달을 통해 객체는 상호 작용하고 책임을 이행할 수 있다.캡슐화: 객체 내 동작과 데이터를 캡슐화 하는 것을 강조한다. 캡슐화는 객체가 자체 ..
테크스펙(Tech Spec)이란? 기술 설명서. 기능을 구현하기 전에 이 기능을 어떻게 구현할 것인지 기술적으로 풀어 설명하고, 제안하는 글 장점 기획적 오류, 버그를 초기에 발견 가능 커뮤니케이션 비용 절감 문서화를 통한 히스토리 파악 가능 내용 요약(Summary) 테크 스펙을 세 줄 내외로 정리. 테크 스펙의 제안 전체에 대해 누가/무엇을/언제/어디서/왜를 간략하면서도 명확하게 적는다. 배경(Backgroud) 프로젝트의 상황(문맥)을 적는다. 목적과 동기, 어떤 문제를 해결하려고 하는지, 이 문제를 해결하기 위해 이전에 시도가 있었는지 등을 적는다. 목표(Goal) 예상 결과들을 Bullet Point 형태로 나열한다. 이 목표와 측정가능한 임팩트들을 통해 프로젝트의 성공 여부를 평가하는 척도로 ..
CSR (Client Side Rendering) 클라이언트(브라우저)에서 웹 페이지를 렌더링 하는 것 모든 로직, 데이터 가져오기, 템플릿, 라우팅은 서버가 아닌 모두 클라이언트에서 처리된다. 주로 SPA(Single Page Application)에서 사용한다. 자바스크립트 번들의 크기의 영향을 많이 받기 때문에 적극적인 코드 분할(code splitting)을 고려해야 한다. 동작 방식 사용자가 홈페이지를 방문하면 index.html을 다운받는다. 이 HTML 파일은 script, meta, link 등의 태그를 포함하며, 빈 콘텐츠 파일이라고 보면 된다. 브라우저는 index.html 안의 bundle.js를 다운받는다. js 파일을 읽으며 렌더링 한다. 사용자가 페이지를 이동할 경우, 이미 받은..
TIL 이란?Today I Learned의 약자로, 오늘 배운 것을 정리하고 기록하는 문화 여러 개발자들은 동기부여를 위해 일일커밋을 하거나, 블로그에 자신이 공부한 내용을 기록하고 공유하는 등 다양한 목적을 가지고 TIL을 진행하고 있다. TIL을 시작하는 이유프론트엔드 입사 초기에는 notion을 이용해 공부한 내용을 정리했었다.하지만 지금은? 업무가 많다. 휴식이 필요하다 등 갖가지 핑계를 대고 손을 놓아버린 지 오래다. Angular에서 singleton service를 밥 먹듯 사용하지만 '싱글톤 패턴이 뭔데?'라는 질문에 명쾌하게 답하지 못하는 나를 보면서 알 수 없는 답답함을 느꼈다.내가 사용하는 게 정확히 뭔지도 모르는데 개발자라고 할 수 있을까? 그렇게 싫어하던 업무 쳐내기를 하는 사람과..