본문 바로가기

전체 글37

ElasticSearch Index 질의(w/ python) 특정 검색 결과를 질의해서 반환받아보자. from elasticsearch import helpers, Elasticsearch import csv, sys es = Elasticsearch(sys.argv[1]) res = [] # Process hits here def process_hits(hits, results): for item in hits: results.append(item) return results data = es.search( index=sys.argv[2], size=10000, scroll='5m', body={ "query":{ "query_string":{ "default_field":"data", "query":"*데이터*" } } } ) # Get the scroll I.. 2022. 6. 7.
locust python 으로 로드 테스트가 가능하고 ngrinder 보다 굉장히 심플하고 가볍기도 해서 사용해보았다. 1. 스크립트 작성 class MatchOrderTasks(HttpUser): wait_time = between(1, 2) @task def start(self) : type = self.get_type() id = uuid.uuid4().hex user_id = random.randint(0, 0x7feabb849210) request = self.get_start_request(id, user_id, type) self.client.post('/v1/start', data=json.dumps(request), headers={'Content-Type':'application/json'}) if.. 2021. 4. 20.
Nest.js A progressive Node.js framework for building efficient and scalable server-side applications. Node.js 를 사용하는데 Express.js 프레임워크에 typescript로 빌드가 되며 타입스크립트와 express 에서 사용하는 라이브러리 등이 모두 활용 가능하다. 일단 typescript 를 사용하기에 정적 언어를 많이 써본 자바 개발자의 진입장벽이 현저히 낮아진.. 1. 설치 brew install npm # node.js 패키지 매니저 설치 npm i -g @nestjs/cli # nest.js 의 새로운 프로젝트를 생성할 수 있게 하는 cli 패키지 매니저 2. 프로젝트 생성 nest new $ nest 에서 제공하는 여.. 2020. 12. 31.
마이크로서비스 패턴 1장 모놀리스 지옥에서 벗어나라 MSA 패턴 책을 읽고 내용을 정리합니다. 모놀리스 설계의 시작 리소스가 적은 상태에서의 애플리케이션의 첫 삽은 모놀리스 식 애플리케이션은 생산성있고 관리와 개발이 적합한 구조라고 생각한다. FTGO 라는 음식배달 서비스를 예를 든다. 하나의 비즈니스 로직을 담은 애플리케이션 모듈로 구성되어 있고 REST API / 웹 UI를 처리하는 인바운드와 그 밖에 외부 서비스를 처리하는 아웃바운드 어댑터로 구성하여 하나의 WAR 로 패키징해서 실행/배포 되게끔 구성을 하게 된다. 이러한 구조는 개발이 간단하고 애플리케이션을 쉽게 변경할 수 있고 테스트하기 쉬우며, 배포 및 스케일 아웃(LB 에 확장한 인스턴스를 실행)하기 쉽다. 모놀리스 방식의 복잡함 대두 여전히 하나의 소스 코드 저장.. 2020. 11. 8.
org.apache.http.NoHttpResponseException {{host}}:443 failed to respond 👿 org.apache.http.NoHttpResponseException 👿 외부 서버와 연동 후 운영 중에 간헐적으로 정상적인 응답이 떨어지지 않았는데, stacktrace를 살펴보니 재시도 하면 해결될 듯한데 명확하지 않으므로 좀 더 찾아보기로 한다. 타겟 서버에서 유효하지 않은 HTTP 응답으로 제대로 응답하기를 실패했다는 신호라고 하는데 문제는 이거다. 현상의 이유는 HTTP/1.1의 Keep-Alive로 인해 httpclient는 통신이 끝난 connection을 종료하지 않고 동일host:port에 대해 동일한 커넥션을 이용하려 하기 때문이다. 비록 서버측은 통신이 완료되어 해당 연결을 close 할지라도 client 측은 커넥션 객체가 여전히 열려있고 데이터가 인입되길 기다리고 있게된다. .. 2020. 8. 12.
서버를 컨테이너로 띄우자 테스트 서버를 이미지로 빌드해 컨테이너로 띄웠던 기억을 되새겨 기록합니다. SpringBoot 기반으로 서버를 띄워보려 합니다. 우선, SpringBoot 애플리케이션을 준비합니다. @SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } } Dockerfile 빌드할 이미지를 위해 도커파일을 준비해봅니다. 몇몇 명령어만 설명합니다. FROM openjdk:8-jre LABEL maintainer="younji@tistory.com" RUN cat /usr/share/zoneinfo/Asia/Seoul > /et.. 2020. 6. 12.