목록전체 글 (92)
새벽을 밝히는 붉은 달
회사에서 벡터 데이터베이스 도입한 것은 알고 있었는데, 인공지능 쪽에 쓰이는 데이터베이스인 것만 알고 정확히 뭔지 잘 모르고 있었다. 점차 팀 내에서 MLOps 관련된 프로젝트가 늘어나는 것을 보며 나도 알고 있어야 언젠가 관련 업무를 할당받았을 때 더 빠르게 이해할 수 있을 것 같아서 살펴보려고 한다. 1. 관계형 데이터베이스는 AI 애플리케이션에 적합하지 않다 우리는 일반적으로 데이터를 저장할 때 관계형 데이터베이스에 저장하고, 이를 기반으로 검색한다. AI 애플리케이션의 경우 복잡한 작업을 실행할 때 장기 기억을 이해하고 유지하는데 중요한 의미 정보를 전달하는 데이터 표현 유형인 벡터 임베딩을 사용한다. 임베딩은 고차원의 단어나 이미지 같은 데이터를 실수 벡터 형태로 표현한 결과물을 의미한다. 아래..
약 3주간 네트워크 책을 읽는 스터디를 했는데, 좀 더 하드웨어에 가까웠던 내용이었어서 소프트웨어 측면에서도 되짚으면 좋을 것 같다는 생각에 이전에 과제로 정리해두었던 글을 남긴다. Wep page를 downloading하는, 굉장히 simple한 request에서도 이를 만족하기 위해서는 많은 protocol들이 필요하다. 예를 들어보기 위해, 내가 나의 컴퓨터로 집과 연결된 ethernet switch에 연결하고, www.google.com 을 다운받는 상황을 가정해보자. DHCP로 IP를 할당받는다 내가 나의 desktop으로 network에 연결하였을 때, IP address없이는 아무것도 할 수가 없으므로, DHCP protocol을 실행하여 IP address를 얻는다. 그 과정을 자세히 설명..
글을 쓰기에 앞서, 나는 Golang을 아주 조금밖에 다루지 못하는 사람이다. Go를 정말 잘 다루는 사람들의 경우에는 책을 읽고 난 후의 감상이 다르게 다가올 수 있기 때문에 이 부분을 참고하여 리뷰를 읽어주세요. 예전부터 Go는 나에게 배우고 싶었던 언어이다. 최근 많이 쓰이는 다양한 인프라 서비스들이 Go로 작성되어 있고, 유명한 프로그래밍 언어 - C, Java, Python 등 - 의 장점 등을 모아 사용하기 쉽다고 하며, 주니어 개발자가 써도 최소한 평타(?)는 친다는, 요즘 인기 있는 언어였기 때문이다. 내 직군에서도 API 서버를 운영하는 부분은 Go를 도입하는 추세였기에 Go는 항상 잘 다루고 싶은 언어인 존재이다. 이전에 Go에 관심이 생겨서 동아리 내에서 스터디를 했던 적이 있었는데,..
1. 들어가며 hdfs에 로그 파일이 쌓이고 있었는데, 로그가 너무 많이 쌓여서 hdfs disk full로 인해 spark를 사용할 수 없었다. 이때 팀리더께서 제안을 해주셨던 방법 중 하나가 logrotate였는데, (결국에 다른 방법으로 해결하긴 했지만) 처음 접한 도구여서 한 번 정리를 해보고자 한다. 2. logrotate란 위에서 말했듯이 DBMS, 어플리케이션 서버, 웹 서버 등을 운영하다보면 자연스레 로그가 쌓이게 된다. 이슈 등이 발생했을 때 쌓인 로그들을 보면서 이슈의 원인이 무엇인지 파악하게 된다. 따라서 로그를 삭제하긴 힘든데, 그렇다고 계속 쌓이는 로그를 가만히 둘 수는 없다. 만약 계속 쌓이는 로그를 가만히 둔다면 서비스의 성능 저하가 오거나, 서비스가 아예 사용이 불가능한 상태..
며칠 전에 운영하던 서버에서 Too many open files 에러로 인해 노트북을 사용할 수 없다는 이슈가 있었다. 만약 내가 백엔드 직무였고 서비스와 직접 맞닿아 있는 부분을 운영하고 있었다면 이미 마주쳐봤을 것 같지만, 나는 사내 대상으로 운영하는 서버여서 접속자 수나 커넥션 등에 대해서는 신경을 쓰지 않다가 이번에 처음으로 만나게 된 에러라 잊지 않기 위해 기록한다. 1. 원인 최대로 열 수 있는 파일 디스크립터의 수를 NOFILE이라고 부른다. 이 NOFILE에는 limit이 있는데, 프로세스가 그 제한을 넘었기 때문에 발생하는 에러이다. 2. 해결 방안 NOFILE에 대한 limit을 늘려주면 된다. 이때, 나 혼자 사용하는 것이 아닌 멀티유저로 운영되는 서버의 경우, 각 프로세스의 limi..
본 글은 쓰기에 앞서, 정보 전달의 목적을 띈 글이라기보다 내가 사용했던 capacity-scheduler에 대해 기록을 남기기 위함을 알린다. 1. YARN 하둡의 클러스터 자원 관리 시스템인 YARN은 Hadoop2에서 맵리듀스의 성능을 높이기 위해 처음 도입되었다. YARN은 클러스터 전체 자원의 사용량을 관리하는 리소스 매니저와 컨테이너를 구동하고모니터링하는 역할을 하는 노드 매니저 등 두 가지 유형의 장기 실행 데몬을 통해 핵심 서비스를 제공한다. 2. YARN의 실행 구조 클라이언트는 YARN에서 애플리케이션을 구동하기 위해 리소스 매니저에 접속하여 애플리케이션 마스터 프로세스의 구동을 요청한다. 리소스 매니저는 컨테이너에서 애플리케이션 마스터를 시작할 수 있는 노드 매니저를 하나 찾는다. 애..
1. 들어가며 presto는 이전부터 많이 들었던 서비스이자 자주 사용하는 AWS Athena가 presto기반 문법을 사용하고 있기 때문에 익숙했다. Trino는 최근에 많이 언급되는 것을 보았는데, 어디선가 presto가 trino로 바뀌었다~ 정도로 들어서 둘이 이름이 같구나 정도로 이해하고 있었는데 datahub ingestion guide 읽어보니까 presto랑 trino랑 다르게 취급을 하고 있어서 혼란이 왔다. 그래서 이번에 둘에 대해서 알아보기로 했다. 2. 결론부터 이야기하면, 둘이 다른게 맞다 나 같은 사람이 많았나보다. starbust에서 Trino와 Presto의 차이가 무엇인지에 대해 설명을 해둔 글(The Difference Between PrestoSQL, PrestoDB, ..
출시된 이후 굉장히 읽어보고 싶었던 책이었는데, 이번에 좋은 기회로 해당 책을 읽게 되었다. 책은 총 3부로 구성되어 있으며, 1부에서는 데이터 엔지니어링 기반 구축하기, 2부에서는 데이터 엔지니어링 수명 주기 심층 분석, 3부에서는 보안, 개인정보보호 및 데이터 엔지니어링의 미래를 다루고 있다. 현재 나는 주니어 데이터 엔지니어로 일하고 있는데, 이 책을 읽으면서 조금 더 빨리 번역되어서 출간이 되었으면 좋지 않았을까 하는 생각이 가장 먼저 들었다. 데이터 엔지니어는 다른 개발 분야에 비해 늦게 등장한 직무이기 때문에 회사별로 정의하는 데이터 엔지니어의 역할과 업무들이 굉장히 다양하다. 이 책은 조직의 데이터 성숙도에 따라 데이터 엔지니어가 어떤 업무들을 하고 어떤 책임을 지게 되는지 소개하고 있는데,..