전체 글

전체 글

    [Linux] Udemy - Linux Command Line 부트캠프 강의 후기

    [Linux] Udemy - Linux Command Line 부트캠프 강의 후기

    (아직 강의를 다 들은 것은 아닌 중간 후기입니다..) 글또라는 모임에서 Udemy의 강의를 수강할 수 있는 기회를 주셨다.그래서 매일 사용하고 있지만 한 번도 제대로 공부해본 적이 없는 Linux CLI에 대해 강의를 들어보기로 했다. 일단 강의가 엄청 많았다..그리고 제목을 봤을 때는 어? 이것들 다 아는 것 같은데? 싶은 것들이 많아서 처음에는 강의를 잘못 선택했나 싶었다.그래도 일단 들어보자 싶어서 들어봤더니 나쁘지 않았다. 아는 내용은 스킵하거나 배속으로 넘겨가면서 듣기만 해도 어느정도 정리가 되는 느낌이었고,강의에서 명령어마다 쓸만한 옵션들을 소개해줘서 '이런 옵션도 있었구나' 하면서 재밌게 들었다.예를 들면, ls는 항상 "ls -al" 요것만 습관적으로 썼었는데 --sort=size, --..

    [검색엔진] Elasticsearch - 인덱스 교체 전략

    개요Elasticsearch를 검색 엔진으로 사용하기 위해서는 다운 타임이 없어야 한다. 또한 데이터 정합성, 실시간 데이터 반영을 챙기기 위해서는 동적, 정적 색인을 진행한다.동적 색인이란, 실시간 데이터 반영을 위해 색인을 위한 데이터의 변경사항이 발생할 때마다 감지하여 ES에 색인시키는 동작을 의미한다. 정적 색인이란, 데이터 정합성이 깨지는 이슈를 방지하기 위해 특정 주기(매일, 매주 등)마다 색인 데이터를 전체 재색인하는 동작을 의미한다.정적 색인 시에 검색 성능 영향을 최소화하기 위해 인덱스 교체 전략이 필요해진다. ES에서 데이터를 색인시키는 경우, 검색에 사용 중인 인덱스에 데이터를 대량으로 색인하는 경우 검색 성능이 현저히 떨어진다. e.g. 10ms -> 2000ms 등 이 이슈를 해결..

    [검색엔진] Elasticsearch 랭킹 (2) - 유사도 점수 정규화

    [검색엔진] Elasticsearch 랭킹 (2) - 유사도 점수 정규화

    개요 Elasticsearch에서 질의어를 기준으로 유사도를 매기는 BM25 점수는 0~무한대의 값을 가진다. (물론 현실적으로는 대체로 20, 최대 100 이내의 점수일 것이다) 검색에서 유사도 점수만 사용하는 경우도 있지만, 다른 점수(문서 자체의 품질 점수, 또는 특정 필드의 가중치 점수 등)를 같이 활용하여 랭킹에 사용하기도 한다. 유사도 점수를 다른 점수와 결합하여 사용하기 위해서는 그 자체로 사용할 때 몇 가지 단점이 있다. BM25 점수가 3, 15일 때의 동일한 품질점수 0.5는 영향력 차이가 매우 크다. BM25 점수가 어느 정도의 값을 가질지는 질의어에 따라 상당한 차이가 발생하기 때문에 품질점수의 영향력을 예측하기가 매우 어려워진다. 물론, 검색된 문서들간의 상대적인 비교가 목적이기 ..

    [검색엔진] Elasticsearch에서의 랭킹 (1) - 스크립트

    개요 검색엔진에서 랭킹은 상당히 중요하다. 검색 결과가 10개 수준인 경우 랭킹이 잘못되어도 품질에서 차이가 크게 안 날 수 있지만, 검색 결과가 수 천, 수 만개인 경우 품질에 상당한 차이가 발생된다. ES에서 랭킹을 어떻게 조정할 수 있는지, 랭킹에는 어떤 요소들이 있는지 등을 살펴본다. 우선 첫 번째로 ES에서 스크립트를 작성하는 방법부터 알아보자. ES에서 스크립트 작성하기 ES에서 script_score를 이용해서 커스터마이징 랭킹을 구현할 수 있다. script_score는 script 언어를 이용해서 코드를 작성하는 방식이다. script 언어는 painless, expression, mustache, java를 지원한다. Scripting 이전에는 python, javascript를 지원하..

    [검색엔진] 검색 엔진 리서치

    [검색엔진] 검색 엔진 리서치

    검색 엔진 검색 엔진이란? 검색 엔진(Search Engine)은 사용자가 웹이나 문서에서 특정 키워드를 검색할 때 관련된 정보를 찾기 위한 소프트웨어 시스템을 의미한다. 대개는 비정형화된 텍스트에 대한 검색을 의미하며, 그림이나 비디오 등의 멀티미디어도 대상이 된다. 여기서의 검색 엔진은 정보 검색(IR, Information Retrieval)의 일종으로 볼 수 있다. IR은 문서나 데이터 소스에서 관련 정보를 검색하고 제공하는 과정을 의미하며, 대개는 텍스트 기반의 정보 검색에 적용되어 사용자의 요구사항과 일치하는 문서를 찾는 것을 목적으로 한다. IR은 사용자의 검색 쿼리를 분석하고 인덱스된 문서를 검색하여 정보를 찾는 등의 문서 검색, 질의 처리, 검색 결과 평가 등의 다양한 기술을 포함하는 개..

    [DevOps] Jupyterhub에서 Copilot&Copilot Chat 사용하기

    [DevOps] Jupyterhub에서 Copilot&Copilot Chat 사용하기

    굳이 Copilot을 주피터에서 사용해야 하나요? - 최근 Github Copilot Chat이 베타 버전으로 출시되었는데, 잠시 사용해보니 나쁘지 않았다. - 그런데 현재는 베타 버전이어서 VSCode에서만 사용이 가능하다. - 현재는 개발 부서에서 일을 하고 있긴 하지만, 분석을 할 일이 종종 있다. 그런데 다루는 데이터 크기가 워낙 크다보니 로컬에서는 어렵고, 회사 내의 Spark 클러스터 자원을 써야만 분석이 가능하다. - Spark 클러스터에 붙으려면 사내 k8s 내에서만 접근이 가능하기 때문에 팀 내 주피터허브를 만들어두고 이걸로 주로 분석한다. - 분석을 할 때 코파일럿 채팅은 커녕 코파일럿도 없이 쌩으로 jupyterlab에서 분석을 하는데 코파일럿이 있다 없으니 참 불편하다. - 그..

    [사이드 프로젝트] 데이터 엔지니어의 백엔드 생존기

    [사이드 프로젝트] 데이터 엔지니어의 백엔드 생존기

    들어가며 - 올해 3월부터 데이터 조직 -> 서비스 조직으로 팀 이동을 하면서 elasticsearch(이하 ES)를 이용해 검색 엔진을 개발하는 신규 프로젝트를 맡게 되었다. ES와 데이터 파이프라인, API 서버(Java, Spring boot)를 구성해야만 했다. - 분석 2년, 엔지니어링 1년 반 정도 업무를 진행한 입장에서 검색 엔진 용도의 ES는 물론이고 Java는 자료구조 수업에서만 써봤기에 다시 신입으로 돌아간 기분이었다. (웬만한 신입은 Spring에 능숙한 상태로 들어올 듯) - 백엔드 개발에 빠르게 익숙해지기 위해 마침 사내에서 지원해 주는 TDD, 클린코드 with Java 교육을 무작정 수강했다. - 2개월 정도 교육이 진행됐는데, 솔직히 따라가기 힘들었다. Java와 백엔드를 전..

    [회고] 직무가 뭐에요?

    [회고] 직무가 뭐에요?

    직무가 뭐에요? 무슨 일해요? 누군가를 처음 만났을 때 흔히들 묻는 말인데요. 저에게 대답하기 망설여지는 말이기도 합니다. 저도 제 직무가 뭔지 모르겠거든요.보안 전문가시작은 보안 전문가(화이트해커)였습니다. 아, 보안 전문가 일을 했다는 건 아니구요. 처음 목표로 했던 직업이 보안 전문가였습니다.때는 바야흐로 군인 시절. 반복되는 사무 업무를 피하고자 밤을 새우며 엑셀을 공부해서 마침내 자동화로 반복 업무를 없앴던 경험이 있었습니다. 자동화 엑셀 파일이 제 자식 같기도 하고 보물 1호 같은 마음에, 기어코 개발을 공부해서 무언가를 만들어내는 사람이 되고 싶다는 나쁜 마음을 먹고 말았습니다. 그 첫 시작이 가장 멋있어보였던 화이트해커였던거죠. "해커라니! 그것도 해커를 잡는 해커라니!" 같은 가벼운 마음..

    [Kubernetes] #4 ReplicaSet

    [Kubernetes] #4 ReplicaSet

    CKA 자격증 준비 과정에서 Udemy의 Certified Kubernetes Administrator (CKA) with Practice Tests 강의를 수강하고 정리한 내용입니다. 대부분의 자료는 해당 강의의 자료이며, 이외 레퍼런스는 관련 내용 상단에 표기하였으니 참고 바랍니다. 1. ReplicaSet이란? 하나의 앱이 장애가 발생하더라도, 동일한 다른 앱은 정상 작동하여 장애가 발생하지 않은 것처럼 동작하기 위한 오브젝트가 ReplicaSet 또는 Replication Controller입니다. ReplicaSet과 Replication Controller는 동일한 목적을 가지고 있지만 일부의 차이가 있는데요. 두 오브젝트의 목적은 Load Balancing과 Scaling입니다. Replic..

    [Kubernetes] #3 Pod

    [Kubernetes] #3 Pod

    CKA 자격증 준비 과정에서 Udemy의 Certified Kubernetes Administrator (CKA) with Practice Tests 강의를 수강하고 정리한 내용입니다. 대부분의 자료는 해당 강의의 자료이며, 이외 레퍼런스는 관련 내용 상단에 표기하였으니 참고 바랍니다. 1. Pod란? 쿠버네티스는 Worker Node 내에 Docker Image 등의 컨테이너를 배포하고 실행시킵니다. (e.g. Redis) 하지만 Worker Node에 컨테이너를 직접 배포하지는 않습니다. Pod라고 불려지는 Kubernetes Object로 캡슐화하는데, Pod는 애플리케이션을 실행하기 위한 단일 인스턴스입니다. Pod는 아래의 특성을 가지고 있습니다. Pod는 쿠버네티스에서 생성하는 최소 단위이다...