프로젝트 12

로드 밸런싱 관련 읽을 거리

https://techblog.woowahan.com/2547/ 실시간 서비스 경험기(배달운영시스템) | 우아한형제들 기술블로그 {{item.name}} 경험기 들어가기 앞서 이 글은 신기술 사용기 또는 소개가 아닌 실시간 서비스 즉 배민라이더스 BROS 1.0 을 개발 하면서 겪어왔던 다소 특별한 개발 및 운영 경험기 입니다. BROS 2.0이 나 techblog.woowahan.com http://www.incodom.kr/Load_Balancing Load Balancing - 인코덤, 생물정보 전문위키 #Load Balancing의 정의 www.incodom.kr https://docs.aws.amazon.com/ko_kr/vpc/latest/userguide/what-is-amazon-vpc.h..

프로젝트 2021.12.09

node js (artillery)

**이 글에는 node.js artillery 부하테스트와 관련은 있지만 얻을만한 지식이 전혀 없습니다. **artillery 부하테스트를 위한 지식이 필요해서 검색을 통해 들어오신분이라면 뒤로가기를 눌러주세요. 현재 진행중인 프로젝트에서 Express기반 API 서버(5000포트)와 Socket.io 기반 소켓 서버(5001포트)로 돌아가는 서비스를 운영중이다. 채팅, 방, 검색, 이미지 업로드 그리고 이미지 리스트 뷰 등이 구현이 되어 있고 로컬환경은 물론이고 AWS환경에서도 구현한 기능에 한해서는 작동하는데 무리가 없는 상태이다. 소수의 사람들이 이용하면 문제는 없지만, 실제 서비스라면 다수의 사람들을 수용할 수 있어야한다. 이러한 부분이 대비가 되려면 트래픽이 존재하는 환경에서 서버가 어떻게 반응..

프로젝트 2021.11.29

나만의 무기만들기 중간회의

시간이 많이 남지 않았는데 해야할 일이 많았다. 오늘도 미팅을 했다. 서비스를 위해 꼭 구현되어야하는부분 / 인지하고 있는 버그 / 추가적으로 하면 좋을 것 같은 부분 3가지로 분류했고 모두 의견을 나눴다. 결론 validation check는 정말 중요하다 버그는 계속 생긴다. 인지하고 있는 버그를 먼저 해결해야한다. 인지하지 못하고 잇는 버그도 챙겨야한다. 구현해야 할 것은 많지만, 우선 버그를 잡고 필수적인 것을 구현하는게 우선이다. 그리고 하고 싶은 것을 한다. 구현 하고 싶은 것을 하기 위해 빨리 선행작업을 해야한다.

프로젝트 2021.11.26

간단한 채팅구현 Socket.io (Node js)

Socket.io를 이용해서 간단한 채팅을 구현했다. 우선 기본적인 로직으로 잘 동작하는 채팅을 구현하고 다양한 방법으로 부하 테스트해보고 문제가 생기면 개선하면 좋을 것 같다. 우선 Socket.io와 Websocket은 다르기 때문에 동일시하면 안된다. Socket.io는 기본적으로 아래와 같이 동작한다. 1. 우선 소켓서버와 연결이 먼저 맺어진다. 2. 연결 주체간의 소통한다. 3. 연결이 끊어지면 다시 연결한다. 2번에대해 부연을 해보겠다 socket함수는 보내는 형식, 받는 형식 쌍으로 이루어져 있다. 보내는 형식은 emit이라는 함수다. socket.emit( "XX", data) 받는 형식은 on이라는 함수이고 받은 데이터를 인자로 받는 콜백함수 실행이 가능하다. socket.emit("XX..

프로젝트 2021.11.22

MYSQL TRIGER

팀원이 DB 쿼리에 대해 오랜시간 고민하여 방법을 찾다가 발견한 기능.. DB에서 일정한 시간에 맞춰서 특정 DATA를 삭제하고 해당 DATA가 속하는 Category 스키마에서 관리하는 칼럼인 Cnt를 줄여주는 방법을 찾다가 발견했다. 지금 우리에게는 유용한 기능인데 현업에서는 잘안쓰이는 것 같다.. MYSQL에서도 자체적으로 조건문과 비슷한 기능이 있는 것을 알게되어 잘 사용했다. https://jeong-pro.tistory.com/118 Destructuring(디스트럭쳐링) - 배열과 객체의 값을 변수로 받는 방법 Destructuring? : 기존에 구조를 가지고 있던 객체(Array or Object)를 파괴(Destructure)하여 별도의 변수에 값을 할당하는 것이다. => 배열이나 객체..

프로젝트 2021.11.18

AWS S3 Client side에서 이미지 업로드하기

진행중인 프로젝트에서 이미지 저장용으로 S3를 사용해보려고 한다. S3 뜻은 별거없다 Simple Storage Service. S가 3개라... S3.... 이미지 업로드에서 중점적으로 고민하고 있는 부분 중 하나는 서버에 I/O작업을 줄이고 최대한 부하를 덜어내는 방향을 우선적으로 채택하는 것이다. 현재 상황에서는 소켓통신과 실시간 위치계산 등으로 앞으로도 더 많은 resource가 서버에서 필요할 것 으로 예상되고 데이터 전송의 Cost도 만만치 않다. 그래서 이미지 관련해서는 Client browser에서 직접 S3로 업로드 하고 url 만 RDB에 저장하는 방식을 사용해보기로 했다. express 에서 multer를 사용하여 Client쪽에서 서버로 이미지를 먼저 보내고, 서버에서 S3로 업로드..

프로젝트 2021.11.17

로그인 기능 적용과 몇 일간의 뻘짓 (feat . CORS (Cross-Origin Resource Sharing) )

세션 로그인 구현후 프로젝트에 적용 과정에서 디버그를 잘 하지 못해서 많은 시간을 허비(?) 했다. 화가나서 스스로 욕을 좀 많이했는데, 문제가 해결된 지금상황에서 돌이켜 보면 헷갈릴만 했고 몇 가지 WEB의 정책적인 부분에 대한 이해가 필요했던 것 같다. 팀원 중 팀장형의 도움이 없었으면 더 오랜시간 헤맷을 것 같다. 디버그 방식은 다양하게 있겠지만 이번에 새롭게 배운점은 구현이 잘된 코드를 찾아본 후 내 코드와 대조하는 방식으로 디버그 하는 것도 효과적이라는 것을 깨달았다. 이번에 문제가 되었던 것들, 새롭게 알게된 부분과 참고한 자료들을 포스팅하였다. 현상 1. node js express 서버(5000)와 간이형식(index.html)을 사용하여 간단히 로그인 기능을 단독으로 구현했을때는 전혀 이..

프로젝트 2021.11.15

DB 최적화 읽을거리

https://jsonobject.tistory.com/408 MySQL/MariaDB, 슬로우 쿼리 원인 분석 및 성능 튜닝하기 슬로우 쿼리 원인 분석 및 해결 데이터베이스의 슬로우 쿼리를 유발하는 요소는 많다. 형사가 단서를 잡아 하나씩 수사망을 좁혀가듯이 원인을 분석해가야 한다. 가장 먼저 선행되어야할, 그리 jsonobject.tistory.com https://soojle.gitbook.io/project/requirements/undefined-2/undefined-2-1/mysql-vs-mongodb MySQL vs MongoDB 성능 분석 - SOOJLE MySQL이 압도적인 성능을 나타내는 것으로 보이나, MySQL은 최대 인덱스 길이를 700자 정도로 제한하였기 때문에, 전문에 인덱스를..

프로젝트 2021.11.11

서버 API 작성시 알아야 할 내용 (request, DB, SQL)

배우는 건 많고 정리할시간은 부족하고 흐아 지식이 그만 휘발되었으면 ㅠㅠ https://dar0m.tistory.com/222 [Web] param vs query vs body 개념 Request 객체는 API를 컨트롤하기 위한 메소드로 아래 세가지를 담고 있다. param query body req.param 주소에 포함된 변수를 담는다. 예를 들어 https://naver.com/post/12345 라는 주소가 있다면 12345.. dar0m.tistory.com Node_js MySQL protocol https://github.com/mysqljs/mysql#multiple-statement-queries GitHub - mysqljs/mysql: A pure node.js JavaScript ..

프로젝트 2021.11.11

node_js express

node_js 를 활용해서 간단한 웹서버를 짜는 예제를 공부하고 express 프레임워크를 사용해 보았다. 한동안 C언어를 많이사용해서 그런가 nodejs로 짜는 웹서버는 정말 간단해 보였다. 그런데 express 프레임워크까지 사용해보니 정말 편한 것 같다. Express 만세.. Without Express // node_js without express // express 프레임 워크 없이 서버를 짠다면 request에 따라 조건문을 사용해서 분기해서 응답해야한다. // express를 사용하면 라우팅을 활용해서 훨씬편하게 코딩 가능하다. var http = require('http'); var fs = require('fs'); var app = http.createServer(function(r..

프로젝트 2021.11.07