목록분류 전체보기 (283)
코딩일상
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cdP6aI/btrNxbgEj39/MkQ6KzfnYZSWKVnGjdMadk/img.jpg)
환경 Node.js 가 설치 되어 있어야 합니다. artillery Modern performance testing toolkit for DevOps and SRE. Latest version: 2.0.0-23, last published: 2 months ago. Start using artillery in your project by running `npm i artillery`. There are 35 other projects in the npm registry using artillery. www.npmjs.com artillery 테스트를 하기위해서 테스트 방법을 작성을 하여야 합니다. config: target: "http://localhost:3000" //요청을 보낼곳 phases: - ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/WmsIv/btrNyF1768V/keDBVV5uKjVw0y8zLr9Dz0/img.png)
GitHub - hanghae99-s8realweek-E3/backend: 항해99 8기 E반 실전 프로젝트 3조, 백엔드 담당 레포지토리입니다 항해99 8기 E반 실전 프로젝트 3조, 백엔드 담당 레포지토리입니다. Contribute to hanghae99-s8realweek-E3/backend development by creating an account on GitHub. github.com 🧑🏻💻배운 것들 ,한 것들 그리고 깨달은 것들 드디어 첫 서버 배포완료 배포후 속 마음: 속이 너무 나도 시원하다...부족한점 한가득이지만 그래도 나의 첫 자식이 드디어 나오게 되었다는점이 신기하기도 하고 지난 시간이 전혀 아까운것이 아니었음을 느꼈다. 버그 지옥: 배포하기 전에도 내부적으로 테스트도 수없이 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/TzTqb/btrMYsIVIPt/y6U7HQFuqM381hMxdeMfk1/img.png)
0) 작성 이유 이 글을 쓰게 된 이유를 간단히 설명하고 본론으로 들어가고자 한다. 프로젝트를 진행하면서 다른 프로젝트들을 참고를 하다 보니 대부분 nginx를 사용을 하는 것이었다.. 응?? 왜 쓰는 거지 저거를 뭐 들어는 봤는데 다사용하는데는 이유가 있을 것이라는 생각이 들었다. 사람들이 많이 쓰는 것은 다 이유가 있는 경우가 대부분이었기 때문이다. 그래서 조금 알아보니 이 nginx도 웹서버라고 한다?? 응??? 이미 저거 없어도 서버는 잘 돌아 가는데 왜 필요하지...? 생각이 들었다... 이런 생각을 하다가 멘토링 시간에 만약 어떤 기능을 발견하고 사용을 해보고 싶다면 그 기능이 탄생한 이유에 대해 먼저 파악을 해보라고 했던 말이 떠올랐다. 그래 일단 nginx 한번 알아보자 마음을 먹게 되었고..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cHfLgs/btrMrTGLnF2/ginzPlTzk2K14W5STFDq61/img.jpg)
🧑🏻💻지난주 배운 것들과 한 것들 그리고 깨달은 것들 웹푸시 구현을 위한 공부 및 TEST 진행 페이지가 켜져있지 않아도 알림을 보낼 수 있었으면 의견이 나옮 적용과정 위와 같은 기능을 FCM을 이용하면 가능하다는것을 검색결과로 알게되었음 실제 적용된 사례 검색후 파악-> 이해를 못하였음 모르는 코드들과 용어가 많았음 더많은 사례들을 보면서 공통적으로 나왔던 용어들을 파악 FCM의 전체 원리 파악이 필요하다 느낌 실제 적용된 사례코드를 적용하였고 console을이용하여 전체적인 흐름파악 Firebase clouduin Messaging Document을 참고 하여 모자란부분 이해후 구현 구현과정에서 깨달은점 그냥 무작정 인터넷에 떠돌아 다니는 예제들을 보고 그냥 쓰면 전혀 현재 서비스의 상황에 적용할수..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/btbsgE/btrMjdGPB16/f1xF2OJAudUT5Jtck9WXV1/img.png)
현재 실전프로젝트 기능 서비스는 SNS의 특징들이 있다. 그렇기 때문에 팔로우 상대피드조회 활동게시물 저장등의 관계를 이루고있는 데이터들이 많아 당연하게 DB를 관계형DB인 SQL을 선택하게 되었다. 그렇기에 처음에 는 관계성DB의 장점이 데이터중복도 없이 각자의 관계를 통해서 현 서비스를 구현하였다. (누구한테나 그럴싸한 계획은 있다 ㅊ쳐.... 마ㅏ...기...) 그런데 가장 API요청이 많이가는 요청에 응답값을 주기 위해서는 단순하나의 테이블이 필요한게 아니라 메인인 todos테이블과 user,comment,challengTodo테이블의 데이터를 전부 가져와야 요구된 응답값을 줄수있게 되었다..... 그결과는 코드 복잡성을 높게 하였고...코드를 짜면서도 수많은 map함수 + findAll;.. 과..
Sequelize를 처음부터 배워서 DB를 다루는데 현재까지 무작정 사용을 해왔다. 뭐가 좋고 뭐가 나쁜거지 이런고민을 하면서도 이부분에 대해서는 무감각하였는데, 지금이라도 알고 가보자 한다. 일단 Sequlize를 처음 배웠을때 ORM이라고 듣고 썼지만 아직까지도 뭐라 해야할지 몰라서 이것부터 짚고 넘어가려고한다. ORM ?? ORM Object Relational Mapping 객체 관계 매핑이다. 객체 관계 매핑은 관계형데이터베이스(내가 배운것은 MYSQL)와 객체지향 프로그래밍(내가 배운것은 자바스크립트)을 매핑해주는 것 매핑(연결)이란 일종의 통역이라고 봐도 되는데 데이터베이스의 테이블과 객체지향 프로그래밍의 클래스가 호환이 되지 않는 것을 호환 ORM을 통해서 SQL Query문을 작성하지 않..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/Bvysr/btrL0UsghQ7/oRHmIS0tVJ8bH6AVjr14PK/img.png)
오늘의 한줄평 불편함이 나를 움직인다. 오늘 한 것 / 공부한 것/ 느낀 것 젠킨스 서버 재설정 실수한점:새로운 서버가 열려서 ssh를 통해 새로 열어야 했는데 그러지 못햇다. 나혼자만의 생각으로 설계를 미스했다. 협업을 하는만큼 좀 더 자주 의사 소통을 하자 ORM(sequlize)를 통해 이중조인이 가능하다는 점 알게된계기:ERD 재설정을 하면서 관계설정의 장점인 조인을 사용하다보니 혹시 sql처럼 이중조인이 우리가 쓰고 있는 ORM으로도 할 수있을까 document를 찾아보니 있었다... 그동안 map 함수를 써서 해결했던 부분을.. 덕분에 좀더 간결한 코드를 작성할 수있게 되었다. 깨달은점: 도구를 사용하게된다면 도구가 가진 기능들에 대해 최대한 파악 해놓자!! 리눅스 문서 편집 VI 기능 공부한..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cYKL3d/btrLLydK1ej/TPj3YLJCEC5DJAf2u07DeK/img.jpg)
🧑🏻💻지난주 배운 것들과 한 것들 그리고 깨달은 것들 기존 API부분에서 예상치 못한 부분들 예외처리(추가 API 구현까지) 꺠달은점:완벽하게 준비를 했다 생각했지만 1차 배포 후 테스트를 하면서 생각지 못한 오류들이 생각보다 많았다. 테스트 과정,예외처리, 에러 헨들러의 중요성을 느낌(서버를 잘지키자) MBTI 궁합 알고리즘 구현 에러사항발생 진행하면서 느낀 점:자신의 MBTI와 궁합이 좋은지 안 좋은지 파악하는 알고리즘을 짜야했지만, 로직을 파악하지 못해 모든 데이터를 입력 그나마 적은 데이터여서 구현했지만 데이터 양이 많았다면 어떻게 처리해야 했을까 고민이 들었음(알고리즘 공부도 손놓지 말자) morgan + winston으로 로깅 환경 조성/input data 관리를 위해 joi 공부 후 적용 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cLpzpD/btrLI3xn1IX/nME5EGqxt5tTVcyiUejj6K/img.png)
CI/CD를 하면 좋은 이유? -어플리케이션 개발 부터 배포까지 서비스 변경사항을 빠르게 배포하기위해서(시장출시 기간 단축) -코드 품질개선(테스트 자동화) -위와 같은 자동화 과정으로 인한 리소스 절감 *개인적이유: 위와 같은 등등의 여러 장점등의 이유는 많았지만 배포하는 과정이 귀찮아서 시작하게된 공부를 조금 정리 해보았습니다.... CI들어가기전 관련용어 컴파일:프로그래머가 작성한 소스 코드를 컴퓨터가 이해 할 수 있는 기계어로 변환하는 과정(한국인 기준 영어->한국어) 빌드:소스코드 파일을 컴퓨터 에서 실행할 수있는 소프트웨어 산출물로 만드는과정 (컴파일된 코드를 실제 실행할수 있는 상태로 만드는일, 컴파일또한 빌드에 속해있는 작업이라생각) 배포:빌드의 결과물을 사용자가 접근 할수 있게 배치하는것..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/co9Sya/btrLhuJCnvw/3IvH3kkW0SEOIoqD18pPTK/img.jpg)
😓이번주의 고민들 1) 아키텍쳐 패턴 고민(개발 시간 단축, 품질 향상, 검증 편리, 소통 원활, 이해 용이, 예측 가능을 위해) 결과 부터 말을 들이자면 Layered Architecture을 사용하기로 결정하였습니다. - 쉬운테스트 구조를 가지자( 단위 및 유닛 테스트를 통해 확실한 코드 구현을 위해) - 러닝커브가 짧은 프로젝트인만큼 논리가 복잡하지 않은 패턴을 선택하자(코드 품질 올리기위해서) 우선 저희가 추구하는 바는 위와 같은 사항들이 있었기 때문입니다. 그리고 그에 가장 적합한 아키텍쳐 패턴이 Layered Architecture이라 생각하였습니다. 다만, Layered Architecture에 대해 파악해 본결과 아래와 같은 단점이있다는 것을 알게되었습니다. 개발코스트가 증가하게된다. 하지..