본문 바로가기

Backend Study

(61)
02. 엘라스틱서치 살펴보기 #실행 elasticsearch #설정파일 sudo find / -name elasticsearch.yml #위치 /opt/homebrew/etc/elasticsearch/elasticsearch.yml 2.1.1 기본 용어 인덱스 데이터 저장 공간이다. 하나의 인덱스는 하나의 타입만 가지며 하나의 물리적인 노드에 여러 개의 논리적인 인덱스를 생성할 수 있다. 분산 환경으로 구성하면 하나의 인덱스가 여러 노드에 분산 저장되어 관리된다. 엘라스틱 서치는 기본적으로 5개의 프라이머리 샤드와 1개의 샤드 세트를 생성한다. 인덱스 이름은 모두 소문자여야한다. 샤드 색인된 문서는 하나의 인덱스, 인덱스 내부에 색인된 데이터는 물리적인 공간에 여러 개의 파티션으로 나누어 구성되는데 이 파티션이 샤드이다. 문서 데이..
검색 시스템 이해하기 이번에 대학교 선배가 운영하는 앱의 검색 엔진 개발을 부탁받게되었다. 수목원 프로젝트에서도 검색 엔진을 우리 회사에서 개발했는데, 내 담당부분이 아니라서 직접적으로 다뤄볼 기회가 없었다. 프로젝트 개발도 해야하고 담당자분에 퇴사 예정에 있어 유지보수를 내가 할 예정이라 차근차근 공부해보려고 한다! Start! 1. 검색 시스템이란? 용어 정리 검색 엔진: 광활한 웹에서 정보를 수집해 검색 결과를 제공하는 프로그램, 검색 결과로 제공되는 데이터의 특성에 따라 구현 형태가 달라진다. 검색 시스템: 대용량 데이터를 기반으로 신뢰성 있는 검색 결과를 제공하기 위해 검색 엔진을 기반으로 구축된 시스템. 내부의 정책에 따라 관련도가 높은 문서를 검색 결과의 상위에 배치할 수 있다. 검색 서비스: 검색 결과를 서비스..
커스텀 태그 1. 커스텀 태그란? 커스텀 태그는 개발자의 목적에 따라서 태그를 정의하고 해당 태그를 작동하게 해주는 확장기술이다. 커스텀태그는 UI에서 반복되는 내용을 한 번만 작성한 후 JSP 태그와 매핑한다. 이후 미리 정의된 내용이 필요할 때 JSP 페이지에서 태그만 선언하면 미리 정의된 내용을 실행할 수 있다. 클래스 기반 작성 방법과 태그 기반 작성 방법이 있다. ➡️ 장점) 재사용성 역할 분담: 화면 개발 시 화면을 만드는 부분과 데이터를 처리하는 부분을 구분하여 작업할 수 있다. 데이터를 처리하는 부분을 개발자가 커스텀 태그로 작성하여 처리하고, 디자이너들은 화면 구성에만 집중하여 작업한다. 2. 클래스 기반 커스텀 태그 TLD 파일 등록: TLD 파일에는 자바 클래스와 JSP 태그를 매핑한 정보가 있다..
Jsp 개요 1. Jsp 개념 jsp 기술은 동적으로 콘텐츠를 생성하기 위해 프로그래밍 코드가 담긴 스크립트를 포함할 수 있게하고, HTML과 유사한 태그를 통해 어려운 자바 코딩 없이도 자바 객체를 사용할 수 있다. jsp는 프로그램적인 명령문들만 컨테이너가 해석해서 처리하고, HTML 태그 부분은 그대로 HTML로 처리되므로 별도의 명령문들로 처리할 필요가 없다. Jsp 파일이 웹 브라우저에서 실행되었다는 것은 JSP 파일이 자바 소스로 변환되었고, 자바 소스가 컴파일되어 클래스 파일이 생성되었으며, 서블릿 컨테이너가 이 클래스 파일을 실행했다는 것이다. HELLO WORLD! 2. 동적인 데이터의 추가 HELLO WORLD! ➡️ name이라는 질의 문자열을 추출하여 출력 / 이처럼 Jsp에서는 템플릿 데이터와..
call back 함수 call back 함수란? 비동기 프로그래밍 방식으로 코드를 만들 때 함수를 파라미터로 만들어 전달한다. 예를들어 더하기 함수를 실행한 후 결과 값이 반환되기를 기다리지 않고 다음 코드를 실행하려고 할 때 콜백 함수를 사용한다. 그리고 연산이 끝났을 때 파라미터로 전달한 함수가 실행될 수 있다면 효율적이다. 이 때 파라미터로 전달되는 함수를 콜백 함수라고한다. function getData(){ let tableData; $.get('https://hi.com', function (response){ tableData=response; }); return tableData; } console.log(getData()); ➡️ $.get()을 사용해 지정된 URL에 데이터를 보내주세요라고 요청하고, 그 데..
네트워크 계층별 프로토콜 (OSI 7 Layer) OSI (Open system Interconnection) 7 Layer은 ISO, 즉 국제표준기구에서 만든 네트워크를 7계층으로 만든 모델이다. 이것이 필요한 이유는 통신 과정 중 특정한 곳에 이상이 생길 경우 다른 단계를 건들지 않고 그 단에서 해결할 수 있다는 것이다. 다른 계층들은 대화를 할 수 없고, 대화를 하기 위해서는 약속이 필요하다. os는 계층이 없는데 이는 성능을 가장 우선시하기 때문이다. 1. 구조 - Application Layer (응용 프로그램 계층) [DATA] 일반적인 응용 서비스를 수행하는 계층이며, 사용자에게 직접 보이는 부분이다. ex. HTTP, FTP, POP3/IMAP, SSH, DNS - Presentation Layer (표현 계층) [Data] 코드간 번역을..
multer로 파일 업로드하기 1. multer이란? 파일 업로드를 위해 사용되는 노드의 미들웨어이다. 2. fs 모듈 사용하여 파일 있는지 확인하기 fs는 노드 js에 들어있는 모듈로 file system의 약자이다. 서버의 파일/폴더에 접근할 수 있는 함수들이 들어있다. fs.readdirSync() 함수로 폴더가 존재하는지 확인하고, 없으면 fs.mkdirSync() 함수로 폴더를 생성해준다. try { fs.readdirSync('uploads'); } catch (error) { console.log('uploads 폴더가 없어 uploads 폴더를 생성합니다.'); fs.mkdirSync('uploads'); } 3. multer module 불러오기 const multer = require('multer'); 4. mul..
쿠키, 세션, JWT 1. 쿠키와 세션을 사용하는 이유 HTTP 프로토콜은 Stateless(상태 정보 유지 X )와 Connectionless(비연결지향) 라는 특성을 가지고 있다. 실제 서비스에서는 데이터 유지가 필수적이다. 그렇지 않으면 매번 페이지를 이동할 때마다 로그인을 다시해야하고, 정보들이 저장되지 않는다. 이를 방지하기 위하여 쿠키와 세션을 사용한다. 쿠키와 세션의 차이점은 상태 정보의 저장위치이다. 쿠키는 클라이언트에, 세션은 서버에 저장된다. 2. 쿠키란? HTTP에서 클라이언트의 상태 정보를 클라이언트의 pc에 저장하였다가 필요시 정보를 재사용한다. 사용자가 어떠한 웹 사이트를 방문할 경우, 그 사이트에서 사용하고 있는 서버에서 사용자의 컴퓨터에 저장하는 작은 기록 정보 파일이라고 볼 수 있다. 동작 방식..