본문 바로가기

[ElasticSearch] Bulk Request에서의 Error Handling 오늘은 Elastic Search의 Bulk Request를 사용하며 살짝 헤맸던 사소한 경험을 공유하겠습니다. Elastic Search의 Bulk API는 하나의 요청으로 여러 명령(index, create, delete, update)을 수행하고 싶을 때 사용할 수 있으며, 작은 단건 Request들을 하나의 Bulk Request로 묶어 수행함으로써 인덱싱 속도를 높이고 다양한 오버헤드를 줄일 수 있습니다. "몇 개의 단건 Request들을 하나의 Bulk Request로 묶을 것인가"는 정답은 없고 다양한 시도를 통해 최적화된 사이즈를 찾아야 합니다. 이때, 수십 메가바이트를 초과하는 너무 큰 대량 요청은 클러스터의 과도한 메모리 압력을 유발할 수 있으므로 조심해야 합니다. 회사에서 수많은 데이..
Software Development Process(소프트웨어 개발 프로세스) 0. 들어가기 앞서 이번 포스트는 필자가 '소프트웨어 공학' 강의에서 필기한 내용, 교수님의 강의록을 기반으로 정리하여 작성하는 것이다 보니 논리적 비약이나 오류가 있을 수도 있습니다. 혹시 잘못된 내용이 있다면 종류를 막론하고 피드백 부탁드립니다. 1. 소프트웨어 개발 프로세스-목적: 질(Quality), 생산성(Productivity) -프로세스(Process): 목표 달성을 위해 수행되는 순차적 단계-소프트웨어 (개발) 프로세스: 예산과 일정 내에 고품질의 소프트웨어를 생산하기 위한 순차적 단계-소프트웨어 프로세스 모델의 종류: Waterfall and V-Model, Prototyping, Iterative Development, Rational Unified Process(RUP), Agile ..
k-way Merge Sort(합병 정렬)의 시간복잡도 계산하기 이번 포스트에서는 분할 정복 알고리즘(Divide and Conquer Algorithm)중 하나인 합병 정렬(Merge Sort)의 개념과 시간 복잡도 계산 과정 등에 대해 정리하고자 한다. 여기서 분할 정복이란 입력 사례를 두 개 이상의 작은 입력사례로 바로 답을 구할 수 있을 만큼 충분히 작아질 때 까지 분할하고, 작은 입력사례에 대해 각각 답을 구한 후(정복 한 후), 각각을 결합하여 문제를 해결하는 방법이다. 1. 2-way 합병 정렬(2-way Merge Sort) 앞에서 설명한 것과 같이 분할 정복 알고리즘은 분할(Divide), 정복(Conquer), 결합(Combine) 크게 세가지 과정으로 이루어 진다, 가장 일반적인 합병 정렬 방식은 분할 단계에서 입력 사례를 두 개의 작은 입력 사례..
두개의 스택(Stack)으로 큐(Queue) 구현하기 이번 포스트에서는 어떠한 별도의 변수를 사용하지 않고 오로지 스택(Stack) 2개로 큐(Queue)의 기능을 구현하는 방법을 정리하고자 한다. 먼저, 두 개의 Data Structure에 대한 간단한 설명부터 하겠다. 1. 스택(Stack), 큐(Queue) 스택(Stack)은 top이라 불리는 한쪽 끝에서만 자료를 넣거나 뺄 수 있는 Data Structure이다. 자료를 넣는 것을 push, 꺼내는 것을 pop이라 하며 가장 마지막에 넣은 자료가 먼저 나오는 Last-In-First-Out(LIFO) 구조이다. 큐는(Queue)는 rear라 불리는 한 쪽 끝에서만 자료를 넣고 front라 불리는 반대쪽 한쪽 끝에서만 자료를 뺄 수 있는 Data Structure이다. 자료를 넣는 것을 자료를 넣는 ..
[190226] 삼성SDS 프로그래밍 멘토링 이번 포스트에서는 2019년 2월 26일 삼성SDS타워에서 진행된 삼성SDS 프로그래밍 멘토링의 내용을 각 Section별로 간단히 정리하고자 한다. Section 1. 삼성SDS 개발문화 Agile Software Development: 문서를 통한 개발방법(document-oriented)이 아닌 실질적 코딩을 통한 개발방법(code-oriented). 앞을 예측하기 보다 짧은 주기(short development cycle)를 가지고 끊임없이 프로토 타입을 만들어내며 그때그때 필요한 고객의 요구를 더하고 수정(user centric). DevOps: Development(개발)+Operation(운영). 계획, 개발, 검증, 배포, 모니터링 프로세스의 자동화. 프로그램의 새 버전을 동일한 환경의 별..