오픈소스 검색엔진인 Elasticsearch 어떻게 저장하고 조회하는지 검색엔진의 개념에 대해서 간단히 살펴보고, Node.js 로 구현된 아주 간단한 예제를 소개합니다.
- 검색엔진과 Elasticsearch 소개
- Elasticsearch에서의 색인
- Elasticsearch에서의 조회
- Node.js 로 구현된 예제 소개
* 자바카페
자바카페 페이스북 : https://www.facebook.com/groups/javacafe/
자바카페 기술 블로그 : http://tech.javacafe.io/
어느 해커쏜에 참여한 백엔드 개발자들을 위한 교육자료
쉽게 만든다고 했는데도, 많이 어려웠나봅니다.
제 욕심이 과했던 것 같아요. 담번엔 좀 더 쉽게 !
- 독자 : 백엔드 개발자를 희망하는 사람 (취준생, 이직 희망자), 5년차 이하
- 주요 내용 : 백엔드 개발을 할 때 일어나는 일들(개발팀의 일)
- 비상업적 목적으로 인용은 가능합니다. (출처 명기 필수)
오픈소스 검색엔진인 Elasticsearch 어떻게 저장하고 조회하는지 검색엔진의 개념에 대해서 간단히 살펴보고, Node.js 로 구현된 아주 간단한 예제를 소개합니다.
- 검색엔진과 Elasticsearch 소개
- Elasticsearch에서의 색인
- Elasticsearch에서의 조회
- Node.js 로 구현된 예제 소개
* 자바카페
자바카페 페이스북 : https://www.facebook.com/groups/javacafe/
자바카페 기술 블로그 : http://tech.javacafe.io/
어느 해커쏜에 참여한 백엔드 개발자들을 위한 교육자료
쉽게 만든다고 했는데도, 많이 어려웠나봅니다.
제 욕심이 과했던 것 같아요. 담번엔 좀 더 쉽게 !
- 독자 : 백엔드 개발자를 희망하는 사람 (취준생, 이직 희망자), 5년차 이하
- 주요 내용 : 백엔드 개발을 할 때 일어나는 일들(개발팀의 일)
- 비상업적 목적으로 인용은 가능합니다. (출처 명기 필수)
[Uws] enterprise application architecture, msa, java9, spring 소개HYUN-JOO LEE
회사 교육용으로 만든 자료입니다. 엔터프라이즈 어플리케이션 아키텍처의 개념부터 시작하여 마이크로서비스 아키텍처와 기존 모놀리식 아키텍처 비교하고 왜 우리가 자바9에 집중해야 하는지 설명하려고 만든 자료입니다. 현재 회사에서 진행하고 있는 클라우드 어플리케이션 통합/아키텍처링 사업과 PoC 플랫폼 개발을 위한 회사 내부 교육용으로 만들었습니다. MSA 부분은 IBM Blumix 밋업 자료에서 발췌했습니다. 잘못된 부분이나 다른 의견이 있으신 분 댓글이나 메세지 주세요. hjlee@uws.co.kr
2. Node.js + express
• Javascript 기반으로 WAS(web application server)를 손쉽게 구
축할 수 있는 환경.
3. For Who?
• 기본 개념과 초기 학습과정은 본 발표자료의 범위를 벗어나므
로 생략합니다.
• Javascript, Node.js, express, NPM 에 대한 기본적인 이해가 있
고, 아직 본격적인 프로젝트를 경험하기 전의 초급자를 대상으
로 합니다.
4. What to make?
• Helloworld 찍어보고 간단한 게시판
같은 것도 만들어봤으니 실제 서비스
같은 의미 있는 프로젝트를 만들어보고
싶은데…
• 뭘 해야 하지?
5. Data
• 막연하게 아이디어를 구상하는 것보다는 구체적인 대상(데이터)
이 주어지면 여러 가지 시도를 해 볼 수 있습니다.
6. 데이터를 어디서 얻지?
• 고정된 데이터는 어디서든 구할 수 있지만, 시각화나 정보화가
의미를 갖기 위해선 유동적인 데이터가 필요합니다.
7. API
• 걸그룹 이름 아닙니다
• Application Programming Interface
• 응용 프로그램에서 사용할 수 있도록, 운영 체제나 프로그래밍
언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스를 뜻
한다. 주로 파일 제어, 창 제어, 화상 처리, 문자 제어 등을 위한
인터페이스를 제공한다.
- 위키백과
8. 공개 API - 1
• 정보공개를 공급자 위주에서 국민중심·수요자 중심으로 전환함
에 따라, 공공기관이 이용자에게 정보를 재활용 할 수 있도록
제공하고, 제공받은 정보를 상업적·비영리적으로 이용할 권리를
부여함으로써 다양한 서비스와 데이터를 좀더 쉽게 이용할 수
있도록 공개한 개발자를 위한 인터페이스
- 사회보장정보원
9. 공개 (open) API - 2
• 일반적인 open API의 정의는 공급자가 공공 기관에 한정되지
않고 누구나 사용할 수 있도록 개방된 형태의 API를 통칭합니다.
• 공개라고 하지만 공급자가 정한 일정의 제약사항은 있습니다.
예) 일일 호출 회수 500회 제한 등, 일정 시간대만 사용 가능
10. REST API
• Representational State Transfer
• HTTP 프로토콜의 메소드 GET/PUT/POST/DELETE를 이용하여 다양한 형태
로 표현된 리소스(JSON,XML 등)를 전달하는 API 형태(를 일반적으로 뭉뚱
그려 REST라고 칭하는데, 이는 엄밀한 의미의 RESTful한 구조와는 차이가
있지만 해당 문서에선 편의상 일반적인 정의를 따릅니다.)
• https://ko.wikipedia.org/wiki/REST
11. API 공급자 선택
• 공공 기관에서 REST API 형태로 제공하는 데이터를 받아서 개
발하면 여러 가지 시도를 해 볼 수 있습니다.
• 여러 선택지가 있겠지만, 이번엔 공공데이터포털을 이용합니다.
• https://www.data.go.kr
12. 준비
• 1. 기본 개발 환경 (Node.js, express)
• 2. 공공데이터포털 회원 가입, 로그인
• 3. 사용할 API 선택
(“오픈API” 탭에서관심있는 서비스를
조회해서 선택)
16. API 명세서 확보
• API 경로 (url) 와 parameter , 응답형태(response) 를 정리한 매
뉴얼입니다.
• 선택한 서비스 상세 메뉴의 기술 문서에서 다운받을 수 있습니
다.
17. API 명세서 분석
• API 문서는 서비스 공급자나 형태에
따라 다르지만, Request 형태에 대한
내용은 필수적으로 있습니다.
18. Request 모듈 설치
• https://www.npmjs.com/package/request
• node에서 http request 요청을 전송하고 response를 callback
으로 받아 처리할 수 있는 모듈을 설치합니다.
• 터미널을 통해 프로젝트 경로에서 하기 명령어로 설치합니다.
• npm install request
19. • 서비스 key도 받았고 API 명세에서 request 경로와 형식도 확인
했으면 request 모듈의 sample code를 참고해서 요청 코드를
작성해봅니다.
• 편의상 url root 경로를 호출하면 로직이 돌도록 작성했습니다.
23. After…?
• 받아온 데이터로 무엇을 할 지는 자유입니다. 분석에 활용해서
결과값을 저장할 수도 있고, 정보를 시각화해서 유용한 서비스
를 만들 수도 있습니다.
• 일단은 데이터 형태를 분석해서 버릴 것은 버리고 가공할 것은
가공하는 것이 우선 순위 작업이겠죠.
• 데이터를 별도 저장소에 저장하거나 유료 서비스에 활용하고자
경우, 서비스 제공자가 명시한 가이드를 따르거나 별도 협의를
거치지 않으면 법적인 문제가 발생할 수 있습니다.
24. 부록
• Front(브라우저)에서 다른 서비스의 API를 직접 호출해서 사용
하고 싶은 경우 CORS에 대한 이해가 필요할 것입니다. (가급적
권장되는 사용 방식은 아닙니다.)
• Service key 값은 코드에 하드 코딩하거나 노출되면 안됩니다!
DB에 저장해서 관리하거나 dotenv 같은 모듈을 통해 개발 환경
에 종속되는 변수를 관리할 수 있습니다.