일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 파이썬3
- 장고
- rabbitmq
- Spring
- 파이썬
- 웹 개발
- 스프링
- 개발
- 자바
- python3
- django
- 웹
- BCI
- mysql
- ORM
- 스프링부트
- 데이터베이스
- java
- 스프링 부트
- 디자인 패턴
- 안드로이드
- Python
- bytecode
- JPA
- 자료구조
- HTTP
- 보안
- db
- Spring Boot
- node.js
- Today
- Total
목록node.js (9)
semtax의 개발 일지
개인 프로젝트를 수행하면서, 위치정보(위도, 경도) 가 포함된 데이터를 빠르게 검색해야 할 일이 있어서 정리한 내용을 올려봅니다. 참고바랍니다.
개요 구글 protobuf는 XML이나 json과 같이 데이터 교환을 위해 만들어진 포맷으로 구글에서 제작하였다. json과는 다르게 바이너리 형태로 포맷이 이루어져있어서 json보다는 속도가 빠르다. 하지만, 별도의 컴파일러를 이용해서 스키마(데이터를 정의)파일을 컴파일을 해서 사용해야하기 때문에, 데이터 포맷을 변경하기가 json보다는 까다롭다는 단점이 있다. 또한, 구글에서 제공하는 RPC(Remote Procedure, 주로 서비스간 통신을 주고받을때 많이 사용 함, 비슷한 서비스로 apache thrift가 있다)프레임워크인 gRPC와 같이 쓰이는 경우가 많다. protobuf는 데이터의 타입을 정의하는 schema파일인 .proto파일과 이를 컴파일해서 사용하는 각 언어별 protobuf 라이..
개요 이번 시간에는 node.js의 프로세스 관리 도구인 pm2에 대해 소개를 하도록 하겠다. Process Manager 먼저 아래의 상황을 가정해보자. 만약 node app.js나 npm start 만을 이용해서 서비스를 띄운다고 가정을 해보자. 그런데, 예상하지 못한 상황(예를 들어 예상 못한 값이 들어와서 예외처리를 못한다거나, DB 커넥션 풀 개수가 꽉찼다거나, 모르고 에러 핸들러 1개를 깜박하고 처리를 못했다거나 등등)이 와서 서비스가 죽어버렸다. 그런데 당신은 자고 있어서 대처가 불가능 하였다. 이런 슬픈상황이 ㅠㅠ.. 또 아래와 같은 상황을 가정해보자. 당신이 node.js를 기반으로한 동접자 100명의 서비스를 운영한다고 가정해보자. 그런데 운이 좋아서 사용자가 갑자기 500명으로 5배 ..
개요 이번 포스팅에서는, node.js 와 rabbitMQ를 이용해서 pub-sub패턴을 구현하는 내용을 진행하려고 합니다. Pub-Sub 패턴? Pub-Sub 패턴은 : Publisher Subscriber 패턴의 약자로, 발행자와 구독자 이 2가지로 나누어서 구독자(Subscriber)가 발행자(Publisher)에게 자기가 발행자의 정보를 받겠다고 구독 신청을 하면, 발행자가 자신에게 구독 신청을 한 구독자에게 메시지를 보내는 패턴을 말합니다. 쉽게 생각해서 TV 방송국과 시청자와의 관계를 생각하시면 됩니다. RabbitMQ Exchage 이전 포스팅에서 다루었던 개념을 다시 한번 복습해봅시다. Producer : 메시지를 보내는 사람 Queue : 메시지를 저장하는 큐(메시지 큐) Consumer..
개요 일정 규모 이상의 프로젝트를 진행할때에 있어서 모듈간 의존성이나, 코드의 품질을 관리하는것은 매우 중요하다. 그래서 많은 사람들(특히 소프트웨어 공학을 전공한 석,박사들)이 어떤 코드가 나쁜 품질의 코드인지 좋은 품질의 코드인지를 구분하는 많은 기준들을 만들어 냈다. 보통 아래와 같은 기준들이 존재 한다. Instability 해당 패키지 또는 모듈이 얼마나 바꾸기 힘든지를 나타내는 지표이다(보통 다른곳에서 많이 쓰고있는 모듈들이 바꾸기 힘드므로.) N(Efferent Coupling) / (N(Afferent Coupling) + N(Efferent Coupling)) 로 계산한다. Efferent Coupling : 다른곳에서 해당 패키지를 사용하고 있다는 의미 Afferent Coupling ..
개요 이번 포스팅에서는 node.js로 메시지 큐 중에 하나인 rabbitmq를 사용하는 법에 대해서 다루도록 하겠습니다. What is Rabbitmq? Rabbitmq는 메시지 브로커 서비스로, 불특정 다수의 사용자가 다른 사람에게 메시지를 전달하려고 메시지 브로커에 메시지를 전달하면 메시지 브로커가 메시지를 받아서 보관하고 있다가 해당 메시지를 받으려는 사람이 보관한 메시지를 꺼내가는 형태의 서비스 입니다. 한마디로, 우체통이나 편지함을 생각해보면 쉽습니다. 편지를 보내려는 사람이 편지를 써서 우체통에 넣으면 받는 사람이 우체통에서 편지를 꺼내가는 구조이지요. 즉 정리하면 아래와 같습니다. 보내는 사람 = 메시지를 보내는 사람 받는 사람 = 메시지를 꺼내가는 사람 우체통 = 메시지 브로커 보통 Ra..
개요 최근 프로젝트를 수행하다, 서비스에서 메모리를 생각보다 너무 많이 사용하는것 같아서 해당원인을 분석해보고 싶었다. 하지만, pm2 monit이나 이런거로는 구체적으로 어떤부분에서 많이 쓰였는지를 알 수가 없어서 방법을 찾던중 크롬 개발자도구에서 node.js 의 메모리나 CPU 사용량을 프로파일링 할 수 있다는것을 찾아서 유용하게 사용하였다. 사용법 크롬 개발자도구에서 프로파일링 하는법은 아래와 같다. 1. node.js로 서비스를 실행할때 "--inspect" 옵션을 주고 서비스를 실행 node --inspect app.js 2. package.json start 항목에 "node_arg": ["--inspect"] 추가. { "name": "imqa_web_api", "version": "2.2..
1. 개관 이번시간에는, Expressjs에서 지원하는 라우팅 기능과 HTTP Method에 대해서 알아보도록 하겠습니다. 2. Expressjs Routing 위키피디아에 라우팅이라는 단어를 쳐보면 전혀 관련 없어 보이는 네트워크 이야기가 나오고 최적경로와 같은 이야기가 나옵니다. 사실 Expressjs와 같은 웹 프레임워크에서 이야기하는 라우팅이라는 단어가 전혀 관련이 없어 보일수는 있지만 경로를 찾아준다는 맥락에서는 관계가 있다고 볼 수 있습니다. 즉, 웹 프레임워크에서의 라우팅은 사용자가 특정 URL에 접근을 하면 해당 URL에 대응되는 이벤트 핸들러를 찾아서 그에 대응되는 함수를 실행 해준다는 면에서 공통점이 존재합니다. Expressjs에서는 아래와 같은 방식으로 라우팅을 수행합니다 const..