Elasticsearch은 어떤 구조로 검색하는가?(하기 내용은 '실전비급 아파치 루씬 7' 저자들이 진행한 스터디 내용을 정리한 것입니다.) 검색엔진으로 시작했지만, 더이상 검색엔진으로만 사용되지 않고, 분산시스템이라는 목적이 크다. 검색엔진이 비정형 데이터를 검색하는 과정은 크게,문서 수집 -> 문서 정제 -> 문서 데이터 색인 -> 문서 검색 순으로 이루어진다.- 문서 수집 : 검색하려는 대상을 수집한다.- 문서 정제 : 수집된 비정형 문서를 정형 데이터로 정제하고 가공한다.- 문서 데이터 색인 : 정제된 문서를 빠르게 검색 가능한 구조로 저장한다.- 문서 검색 : 문서 정보에서 검색어를 찾는다. Elasticsearch는 Lucene에 인터페이스를 입혀서 런타임, 분산검색, 데이터제공 등을 하므로..
1) 빅쿼리란? 빅쿼리는 페타바이트 급의 데이터 저장 및 분석용 클라우드 서비스이다. 8800개의 CPU와 3600개의 디스크를 사용하는 대규모 인프라를 통해 1000억개의 레코드에 대한 질의를 약 30초에 수행하며, 가격도 저렴하다. 2) 특징 서버리스, NoOps, 실시간 분석, 자동 고가용성, 표준 SQL, 저장소와 컴퓨팅 분리, 세분화된 액세스 제어, 자동 백업 및 간편한 복원, 분산 저장, 데이터 전송 서비스, 빅데이터 생태계 통합, 데이터 암호화 및 보안, 프로그래매틱 상호작용, 배치/스트리밍 모두 지원, REST API 제공, stackdriver를 통한 모니터링 및 로깅, 쿼리당 과금 등등 특징도 참 많다. 구조적인 특징으로는, ㄱ. No Key, No Index (키나 인덱스 개념이 없고..
이 포스팅은 DevOps에 대해 학습하던 중 정리한 것으로, 개념 및 분류가 다소 정확하지 않을 수 있습니다. Dev vs Ops 동기(Motive) : Dev와 Ops 간에 서로 다른 목표때문에 갈등이 발생한다. (Dev는 고객에게 제공한 변경을 빠르게 보기를 원하나, Ops는 안정성에 관심이 많음) 따라서 공유된 목적에 대한 합의, Ownership, 가치의 공유 등이 중요하다. 프로세스(Process) : 소프트웨어를 어떻게 개발하고 배포할지 정의하는 프로세스가 툴보다 중요하다. 개발에서 운영에 전달하는 속도를 관리하기 위한 프로세스를 만들고 최적화하여야 한다. 도구(Tools) : DevOps의 능률은 자동화에 의존하며, 사용하는 도구는 version control, build, package, ..
레드마인은 이슈트래킹을 목적으로 사용하는데(JIRA가 유료이기 때문에), markdown / ckeditor 등을 지원하며 git / svn 등의 버전관리시스템과도 연동이 가능하다. project와 일감 등을 계층구조로 구성할 수 있고 하위일감, 연관 일감 등으로 구성할 수 있어 유기적인 구성이 가능하다. 그 외에 게시판, wiki, 간트차트, 파일 저장소 등의 기능들이 유용하게 사용된다.1. Prepare - Install Package1yum -y install nano zip unzip libyaml-devel zlib-devel curl-devel openssl-devel httpd-devel apr-devel apr-util-devel mysql-devel gcc ruby-devel gcc-c+..
Apache Web Server (html, css, js, img 등) 정적인 부분은 웹 서버에서 처리 MPM (Multi-Processing Module) : 여러 개의 프로세싱 모듈 기반의 서비스를 제공 병렬처리를 수행하지 않는 서버는 특정 클라이언트가 접속하여 서버와 입출력을 하고 있는 동안 다른 클라이언트는 서버에 접속할 수가 없기 때문에, 병렬 처리의 구현이 서버의 성능에 미치는 영향이 크다.Process와 Thread 비교 포스팅 바로가기 방식처리주체장점단점대응 예프로세스 기반 방식프로세스구조가 간단하고 구현이 쉬움대량의 메모리가 필요, 느림아파치(prefork)스레드 구동 방식프로세스와 스레드의 하이브리드메모리를 적게 사용, 설정에 따라 약간 빠름이벤트 구동 방식보다 성능 한계가 먼저 옴아..
프로세스는 운영체제로부터 자원을 할당받는 작업 단위를 말하며, 쓰레드는 프로세스가 할당받아온 자원을 이용하는 실행단위이다. 프로세스는 운영체제로부터 프로세스가 운영되기 위해 필요한 주소공간 / 메모리 등의 자원을 할당받고, 쓰레드는 프로세스 내에서 프로세스가 받아온 자원을 공유하며 실행되는 흐름을 말한다. 지금 보면 명료한 정의인데, 처음 접했을 때는 직관적이지 않아 당혹스러웠다. 그래서 프로세스란 무엇인가?(아래의 설명은 리눅스를 기반으로 설명하였습니다.)프로세스는 실행중인 프로그램으로, 1개의 CPU는 1개의 프로세스만을 실행할 수 있다.보통 우리가 HDD에 있는 프로그램을 실행하면, 명령어 등의 데이터가 메모리에 적재되고, 스케줄러에 의해 CPU에서 연산된다. (이는 비용이 연산 및 I/O 속도에 ..
리눅스 서버 60초안에 상황파악하기
Package Update $ sudo apt-get update // apt를 업데이트 $ sudo apt-get upgrade // 내가 설치한 프로그램들을 최신버전으로 업그레이드 한글 설정 (Ubuntu) $ sudo apt-get install language-pack-ko // 한글 패치 $ sudo locale-gen ko_KR.UTF-8 $ sudo reboot $ locale // locale 확인 $ sudo -i $ cat > /etc/default/locale LANG="ko_KR.UTF-8" LANGUAGE="ko_KR:ko:en_US:en" EOF 세션 재연결