전체 글 221

마이크로 서비스 아키텍처 도메인

마이크로 서비스 하나의 큰 애플리케이션을 여러 개의 다른 역할을 수행하는 애플리케이션으로 분리하였을 때 각 애플리케이션을 의미 마이크로 서비스 아키텍처 마이크로 서비스를 분리하여 여러 개의 작은 애플리케이션으로 쪼개어 변경과 조합이 가능하도록 만든 아키텍처 애플리케이션을 특화된 기능별로 나누게 되면 자연스럽게 애플리케이션의 추상화(abstraction)가 가능해진다. 즉, ‘인증’을 담당하는 서비스(예, auth.example.com)는 그 구체적인 구현 내용을 모르더라도 다른 서비스에서 약속된 인터페이스를 이용해 인증 과정을 수행할 수 있다. 모놀리틱 아키텍처(MONOLITHIC ARCHITECTURE) 비즈니스 로직을 담당하고 있는 애플리케이션이 존재하고, 해당 애플리케이션은 데이터베이스 등 외부 시..

coding/IT, CS 2022.08.07

TIL 220807

오늘은 어제 레이어드 아키텍처 패턴으로 구조를 나눈 내 파트 좋아요 기능 서비스와 컨트롤러에 대한 코드를 일부 수정 및 보완을 하고 바로 테스트 코드에 대해서 공부를 시작했다. 강의를 들으면서 테스트 코드란 코드에 오류가 있는지를 확인하기 위해서 작성해서 일부로 에러를 만들어서 제대로 오류를 보여주는지 정상적으로 작동하는지에 대한 확인을 위해 만든다고 배웠다. 개발자가 일일이 콘솔 로그로 정상 작동하는지 오류가 있는지 확인을 할 수도 있지만, 프로젝트 규모가 커지고, 코드가 많아질수록 하나하나 오류를 확인하는 것이 어렵기 때문에 오류를 만드는 로직을 만들어서 한 번에 검사하는 그런 기능인 것 같다. 개념적으로 대략 이해하고, 쉬운 예제를 따라 하면서 공부를 하는데 실제로 내가 만들었던 코드들에 대한 오류..

일지/TIL 2022.08.07

node.js Controller, Service, Repository

사전 준비 Directory Structure 내 프로젝트 폴더 이름 ├── app.js ├── config │ └── config.json ├── controllers │ └── posts.controller.js ├── migrations │ └── 20220731133318-create-posts.js ├── models │ ├── index.js │ └── posts.js ├── repositories │ └── posts.repository.js ├── routes │ ├── index.js │ └── posts.routes.js ├── services │ └── posts.service.js ├── package.json └── package-lock.json controllers, servi..

coding/Node.js 2022.08.07

.gitignore .env dotenv 환경변수 설정 및 관리

.gitignore이란? git으로 관리하지 않을 파일들을 설정해 주는 파일이므로 이 안에 있는 파일들을 gitHub에 업로드되지 않는다. // .gitignore # 파일 무시 test.txt # 다음과 같은 확장자는 전체 무시 *.text *.exe *.zip # 폴더 무시 test/ gitignore 안에 작성한 파일 및 폴더는 변경사항이 있더라도 변경사항에 포함되지 않아 git commit 을 해도 반영이 되지 않는다. 당연히 push에도 영향을 받지 않는다. .env이란 환경변수를 설정한 파일 남들에게 보여서는 안 되는 정보들이 담겨있기에 이 파일이 깃 허브에 올라가 모두에게 중요한 정보를 노출되지 않도록 .gitignore 파일에 명시한다. 주로 ID, PW, secretkey 등등 중요한 정..

coding/git 2022.08.06

TIL 220805

주특기 심화 주차가 시작되었다. 이게 몇 챕터고 몇 주 차인지 까먹기 시작한다. 99일 동안 하루하루 날짜를 세어가며 살지 않으니 오늘이 며칠인지, 무슨 요일인지 항해 며칠 차인지도 모르겠다 ㅋㅋ 그만큼 정신이 나가고 피폐해지고 있다는 건데 또 좋게 생각하면 그만큼 코딩에, 개발에 진심으로 몰두하고 있다는 좋은 의미겠지 라며 생각해야지 심화 주차에는 개인과제가 아닌 팀 과제로 진행이 된다. 지금까지 만들었던 서버를 다른 사람들과 공유해서 사용한다. 이번 주의 팀 과제는 지금까지 만들었던 코드 로직을 계층형 아키텍처 패턴으로 구조를 변환하는 거다 쉽게 말해 라우터처럼 경로와 기능에 따라 로직들을 유지보수와 재사용을 더 용이하게 하기 위해 더 잘게 나누어 따로 관리하게 만드는 것이다. 컨트롤러로 요청을 받아..

일지/TIL 2022.08.05

계층형 아키텍처 패턴(Layered Architecture Pattern)

계층형 아키텍처 패턴(Layered Architecture Pattern) 계층을 분리해서 관리하는 아키텍처 패턴이고, 현재 가장 흔하게 사용되고 있는 아키텍처 패턴 중 하나 단순하고 대중적이면서 비용도 적게 들어 모든 어플리케이션의 사실상 표준 아키텍처이다. 어떤 경우든 계층을 분리해서 유지하고, 각 계층이 자신의 바로 아래 계층에만 의존하게 만드는 것이 목표다. 3계층 아키텍처의 계층 -프레젠테이션 계층 (Presentation Layer) - 비즈니스 로직 계층 (Business Logic Layer) - 데이터 엑세스 계층 (Data Access Layer) 계층형 아키텍처 패턴의 장점 각 계층별로 의존성이 낮아 모듈을 교체하더라도 코드 수정이 용이하다. 각 계층별로 단위 테스트를 작성할 수 있어..

coding/Node.js 2022.08.05

nodemon

node.js 서버를 이용하면서 코드를 변경하게 될 경우, 변경한 코드를 웹 상에서 확인하려면 서버를 껐다가 다시 켜야 변화를 감지할 수 있다. nodmon이란 node.js 서버를 내리고 올리지 않아도 소스를 변경할 때 바로 감지해서 자동으로 서버를 재시작해주는 TOOL이다. nodemon 설치 npm i nodemon -D -dev를 붙이면 개발환경에서만 사용하도록 해준다. 지금까지 코드를 수정하면 서버를 내렸다가 다시 node app.js로 다시 실행했지만, nodemon을 사용하면 코드 수정후 저장을 누르면 알아서 서버를 내렸다가 수정된 코드로 서버를 실행시켜준다. nodemon 실행 nodemon app.js

coding/Node.js 2022.08.04

TIL 220804 주특기 숙련 끝

주특기 숙련 주차가 끝났다. 어제 사실 모든 기능은 끝내고, 좋아요 게시물 보여주기 코드도 어렵게 작성했던 거 늦은 시간까지 코드를 조 수정해서 훨씬 더 간단한 map 함수로 리팩터링 했다. 이건 뭐 초반에 내가 실수해서 핀트를 잘 못 맞춰서 어려운 길로 갔던 거니까 promise.all도 덕분에 좀 공부했고 비동기에 대해서 많이 공부했다. 아직 잘 모르는 게 문제지만 오늘은 관계 설정과 조인을 확실할게 끝내고 싶었다. 어제 다른 크루원들에게 조언을 받은 게 있어서 그 자료를 참고해서 만들어 보니 딱 하루가 걸렸다. 오전부터 시작해서 하루 종일 해서 딱 방금 막 끝나서 다시 배포까지 하고 왔다. 중간중간에 잘 모르는 개념이고 하니까 잘못된 길에서 삽질을 많이 해서 오래 걸렸다. 그게 아니었음 그래도 이렇..

일지/TIL 2022.08.04

함수의 {return }

아..... 바보같은놈 map( e => e.postId) map(e => {return e.postId}) // 이 같은건데 map(e => {e.postId}) // 이러고 있어따.. 이러고 있으니 값이 안찍히고 undefind가 나오지 아 멍청한놈.... return을 해줘야 값이 출력이 되는데 안쓸꺼면 {}를 해주지 말던가... 이걸로 3일이나 날려 먹고 힘들게 어려운 길을 가고 있었네... const likePost = datas.map((e) => e.postId); const likePosts = await Post.findAll({ where: { postId: likePost }, }); res.json({ data: likePosts.map((e) => { return { postId:..

coding/Error 2022.08.04

TIL 220803

오늘은 개인과제 제출을 완료했다. 오전에 코드의 주석들을 좀 정리를 하고, 배포를 완료했다. DB서버는 AWS의 RDS를 사용해서 큰 문제없이 배포됐고, 디비도 로컬에서 돌리던 서버에서 저장한 디비들도 안전하게 전부 들어갔다. 오후에는 저에 매니저님의 도움으로 해결한 비동기 쪽 코드를 계속 보고 어떻게 구현되는 거지 구글링도 하고 js비동기 promise와 async, await 쪽 강의를 유튜브에서 찾아서 봤다. 도움이 아예 안 되지는 않는데 봐도 봐도 도통 뭔 소린지... 알듯 말듯한 개념이나 예제들이 너무 어렵다 ㅜ 이 개념들은 정리를 한번 해야 하는데 아직 하기엔 정리가 잘 되지 않아 좀 더 개념이 잡히면 꼭 해봐야겠다. 아 그리고 요즘 오전과 낮에 왜 이렇게 강의만 보면 졸음이 오는지... 글을..

일지/TIL 2022.08.03