logo
logo
언어
Rust
StackOverflow 질문 수: 42765
Github Stars : ★ 98085
사용 기업
금융/보험
소셜/컨텐츠
이커머스
종합
블록체인
인공지능
헬스케어
techstack-logo
두나무
techstack-logo
하이퍼커넥트
techstack-logo
스포카
techstack-logo
업라이즈
techstack-logo
SK플래닛
techstack-logo
데브시스터즈
techstack-logo
SK텔레콤
techstack-logo
오퍼스엠
techstack-logo
CJ올리브네트웍스
techstack-logo
메타플라드
techstack-logo
티오리
기술 블로그 글
SK텔레콤
에이닷 RAG 기능 개발을 위한 Qdrant 벡터 DB 구축 (from source tarball)
에이닷에서 파인튜닝을 통해 각 도메인별 특화 데이터를 추가 학습시켜 맞춤형 모델을 만들고 있지만실시간으로 업데이트 되는 동적인 데이터에 대한 대응 그리고 할루시네션 억제, 모델 외부 데이터의 대한 접근을 위해서는 RAG 기능 활용하는게 옳은 선택이라고 합니다.RAG 기능 구현에 있어 VectorDB는 필수 솔루션이며, 여러 VectorDB 중에서 현재 플랫폼에서 스테이징으로 이용하고 있는 Qdrant 구축 내용을 공유하고자 합니다.일반적인 Cloud 솔루션, Kubernetes , Docker 방식이 아닌 정통(?) 방식의 source tarball를 이용한 컴파일 및 Qdrant Cluster 구성방식 입니다.위 링크 내용과 같이 Qdrant 설치에 있어 추천하는 Production 방식은 Qdrant Cloud, Kubernetes Helm, Qdrant Kubernetes Operator, Docker and Docker Compose 입니다.플랫폼에서는 대부분 On-premise 환경을 이용하기 때문에 Kubernetes와 Docker 방식이 적합한걸로 판단되었습니다.현재 내부 정책상 Redis, MongoDB, MySQL, Kafka 등 플랫폼에서 사용하는 주요 stateful 솔루션은 독립된 서버 호스트를 이용 Cluster로 구성하여 이용하고 있습니다.단일 솔루션의 장애가 다른 솔루션으로 전파되는걸 방지하는 목적이며, 그렇기 때문에 Kubernetes 방식은 차선택으로 우선순위가 밀리게 되었습니다.Docker 방식으로 구성을 검토하면서, Qdrant github의 Dockerfile 내부에서 소스파일 컴파일을 진행하는걸 확인했습니다.위 내용을 보면서 추가적인 Docker 레이어 없이 프로세스를 직접 컨트롤 할 수 있는 바이너리 형태로 서비스 운영이 가능하다고 판단하여 source tarball를 이용한 소스컴파일로 서비스 구성을 결정하였습니다.소스 컴파일은 Qdrant에서 추천하는 방식은 아닙니다. 그렇기 때문인지 컴파일을 위한 설명이 매우 미비합니다.Qdratn Github의 Dockerfile을 참고하여 컴파일 과정을 이해 하였고 아래 내용부터는 해당 과정을 정리하였습니다.• None Node : Cluster 구성을 위해 Baremetal 노드 3대 (VM구성시 최소 메모리는 6GB 이상 필요)• None 서비스 운영 환경에 따라 스펙이 변경되어야 하므로 상세 스펙은 생략• None 컴파일시 실제 메모리 사용이 6GB이상 발생하는것 확인 되었습니다.• None Network : 각 노드가 Master 역할을 하며, HA 위해 L4 스위치 이용하는걸 추천합니다.라이브러리 및 소스 다운로드로 위해 모든 노드들은 임시로 Outbound Any Open 된 상태가 되어야 합니다.참고로 Qdrant Github releases 에서 x86_64 범용 바이너리를 패키지를 제공하나 RHEL 8.x , RHEL 9.x , CentOS Stream 9 에서는 gcc 및 주요 라이브러리 버전 이슈로 사용이 어렵습니다.Qdrant는 Rus
docker
github
kubernetes
nodejs
rust
SK텔레콤
첫공부! Rust 란 무엇인가? Hello world는 찍어봐야죠?
Rust 에 대해서 공부및 정리 후 나만의 노하우와 지식을 공유한다• None Rust 를 통해서 첫 프로그램을 작성해본다. Hello World ?Rust는 현대적이고 안전한 시스템 프로그래밍 언어로, 메모리 안전성과 병행성을 강조하는 특징을 가지고 있다고 하네요.Mozilla에서 개발된 이 언어는 C나 C++과 같은 저수준 언어의 성능을 유지하면서도 메모리 안전성과 스레드 안전성을 보장한다고 하고요.이러한 Rust의 특징은 시스템 프로그래밍, 웹 개발, 임베디드 시스템 등 다양한 분야에서 널리 사용되고 있다고 하니 개발자로써 한번 써봐야겠죠?참고로 홈페이지는 아래와 같습니다.Rust는 메모리 안전성을 보장하는데, 이는 프로그램이 잘못된 메모리 접근으로 인한 버그를 방지합니다.또한, Rust 컴파일러는 컴파일 시간에 다양한 에러를 검출하여 개발자가 이를 미리 수정할 수 있도록 돕습니다.뛰어난 에러 메시지와 간결한 문법을 통해 Rust는 생산성을 향상시킵니다.Rust 컴파일러는 친절한 에러 메시지를 제공하여 개발자가 빠르게 오류를 해결할 수 있도록 돕습니다.또한, 강력한 타입 추론 시스템을 통해 코드를 더욱 간결하게 작성할 수 있습니다.Rust는 활발한 개발자 커뮤니티를 가지고 있습니다.Crate라 불리는 패키지 레지스트리를 통해 다양한 라이브러리를 사용할 수 있으며, 이는 개발 생산성을 높여줍니다.또한, Rust의 범용성은 다양한 분야에서 사용될 수 있음을 보여줍니다.다시말해서 Rust Crate는 Rust 언어에서 사용되는 라이브러리 또는 패키지를 가리킵니다.이러한 Crate들은 Rust 커뮤니티에 의해 만들어지며, 다양한 기능을 제공합니다.이것들은 크게 두 가지 범주로 나뉩니다표준 라이브러리 (std) 크레이트와 외부 크레이트.표준 라이브러리 크레이트는 Rust 프로그래밍 언어의 기본 기능을 제공하며, 외부 크레이트는 개발자들이 Rust로 다양한 프로젝트를 빌드할 때 사용할 수 있는 다양한 기능을 제공합니다.Rust의 크레이트는 crates.io라는 공식 저장소에서 찾을 수 있습니다. 거기에서는 수천 개의 크레이트가 제공되며, 이는 Rust 생태계의 풍부함을 보여줍니다.Rust는 안전하고 효율적인 병행 프로그래밍을 지원한다고 하는데요소유권 시스템과 함께 사용되는 스레드 안전성을 보장하는 기능들은 멀티스레드 환경에서 안전하게 프로그램을 작성할 수 있도록 돕는다고 하네요.또한, Rust의 '고양이의 발자국'(?) 철학을 따라, 데이터 경합 문제를 사전에 방지하여 병행성을 쉽게 다룰 수 있습니다.참고로, 고양이의 발자국 철학은 Rust 커뮤니티에서 사용되는 개념인데요.동시성 프로그래밍에 대한 접근 방식을 설명합니다.이 철학은 "Rust의 소유권 시스템과 타입 시스템은 고양이의 발자국처럼 작동해야 한다"라는 의미를 담고 있다고 하네요.고양이의 발자국은 다음과 같은 특징을 갖습니다:고양이는 유연하고 민첩하게 움직일 수 있습니다.마찬가지로, Rust 코드도 데이터를 쉽게 이동하고 복사할 수 있어야 합니다.Rust의 소유권 시스템은 데이터의 이동성을 강조하며, 이를 통해 불필요한 복사와 메모리 누수를 방지합니다.고양이는 다른 고양이나 개와 격렬한 경합을 피합니다.Rust도 다중 스레드 환경에서 데이터 경합을 피하기 위해 안전한 병행성을 지원합니다.이를 통해 Rust 코드는 안전하게 다중 스레드 환경에서 실행될 수 있습니다.고양이는 자신의 영역을 지키고 보호합니다.마찬가지로, Rust는 소유권 시스템을 통해 메모리 및 자원에 대한 접근을 제어하고 보호합니다.이를 통해 런타임 에러와 메모리 누수를 방지하며 안전한 프로그래밍 환경을 제공합니다.다시말해서 고양이의 발자국 철학은 Rust의 핵심 원칙 중 하나로, 안전하고 효율적인 병행 프로그래밍을 위한 기반을 제공합니다.Rust 코드가 고양이처럼 유연하고 안전하게 동작할 수 있도록 설계되어 있다고 하네요.기본으로 설치해본다. (1번선택)위와 같이 Rust is installed now. Great! 가 나오면 정상 설치된것임아래와 같이 설치버전을 확인해 볼 수 있습니다.컴파일은 아래와 같이 하면된다.Rust에 대한 간단한 내용이였고요..시작이 반이다라는 말을 항상 떠올리며, rust 에 익숙해질 때까지 달려야(?) 겠습니다.Rust는 안전성, 병행성, 생산성 등의 면에서 우수한 프로그래밍 언어라고 하고요.현대적인 소프트웨어 시스템을 개발하고자 하는 개발자들에게 매우 유용한 도구라고 하니 저도 한번 사용해 보려고 합니다.오늘의 블로그는 여기까지고요그럼 오늘하루도 건강하시고 행복한 하루되세요~나의 목표 및 다짐을 항상 내곁에 두기• None• None 나의 강점을 바탕으로 나의 일을 잘해냄으로써 타인과 사회를 아릅답게 만든다.• None 현재 내가 가진 능력으로 누군가에 도움이 될 수 있을까? 에 대해서 항상 생각하기• None 나는 블로그 생태계에서 IT 테크관련 파워블로거가 반드시 된다!• None 유튜브 시장(?)을 호령하는 100만 유튜버가 반드시 된다!! (feat. 100만 유튜버가 반드시 될 매직!!)• None 나는 꾸준히 공부하고 공부한것을 실천하는 창의적인 개발자가 된다.! (feat. devocean 개발&운영자가될 매직!!)• None• None 꾸준한 블로깅/기록법/독서법으로 넘버원이 아닌 온리원이 되보자.• None 천사불여일행(千思不如一行)을 항상생각하며 체화 및 각인시키자.• None "천번 생각하는것보다 한번 행동하는 것이 더 중요하다."• None• None 천리마도 한번에 열걸음을 뛸 수 없고, 느리고 둔한말이라도 열흘이면 하룻길을 간다.• None 모든 실수에는 마술이 숨어 있다. 따라서 나는 실수하면 실수할수록, 그런 실수에서 더 많이 배울수록 삶에서 더 많은 마술을 갖는다.조금이나마 제 글이 도움이 되셨다면, 아래 배너 링크를 통해서 네이버인플루언서 팬이되주시면 제가 컨텐츠를 생산(?)하는데 큰 도움이 될것 같습니다. ^^;
rust
위대한상상
AWS Re:invent 2023 참관기와 연사자 후기! (1)
안녕하세요 🙂아마존 웹 서비스(Amazon Web Services, AWS)가 주최하는 연례 클라우드 컴퓨팅 콘퍼런스인 AWS Re:invent 2023에 요기요 R&D Center도 다녀왔습니다.올해도 11월 27일(월) — 12월 1일(금)까지 미국 라스베이거스 현지에서 진행되었는데, 따끈따끈한 후기는 물론! 이번 Re:invent 2023에 요기요가 연사자로 함께하면서 더욱더 특별한 후기도 함께 공유하려고 해요.짧은 자기소개와 함께 사전에 등록한 세션을 알려주세요! 🙋🏻‍♀️🙋🏻‍♂️안녕하세요, MnR 그룹의 Last Mile 팀에서 백엔드 개발을 하고 있는 김다은입니다.저는 실무에 적용 가능한 방법론을 다루는 세션 위주로 선택했습니다. 최근에는 장애가 발생하더라도 시스템을 최대한 빠르고 안정적으로 복구하는 것에 관심이 있다 보니 장애 회복력을 높이는 방식을 다루는 세션을 주로 선택했어요. 그래서 세션 카탈로그에서 세션을 검색할 때 실무에서 사용하고 있는 서비스 (Aurora, ElasticCache)를 다루면서도 제목에 Resilience, Resilient 와 같은 단어가 포함된 세션을 검색했습니다.한 가지 꿀팁이라면, 행사 시작 약 2주 전에 세션 예약이 언제 오픈되는지 알려주는 이메일을 받습니다. 인기 있는 세션들은 콘서트 티켓팅처럼 예약이 오픈되자마자 빠르게 마감되기 때문에 사전에 일시를 미리 확인하고, 일시에 맞춰서 바로 예약하는 걸 추천드립니다.안녕하세요! Customer 그룹의 FE_MnF 팀에서 프론트엔드 개발을 하고 있는 변동혁입니다.저는 사용자에게 웹을 통해 빠르고 안정적인 서비스를 제공하는데 관심이 많아 주로 네트워크와 호스팅 관련한 세션을 예약했습니다.Evolve your web application delivery with Amazon CloudFrontA developer’s guide to cloud networkingAWS re:Invent 2023 — I didn’t know Amazon API Gateway did that (SVS323)첫 번째 세션에서는 Amazon CloudFront의 기능과 지원하는 프로토콜에 대해 배웠고, 콘텐츠를 사용자에게 어떻게 빠르게 제공할 수 있는지에 대한 원리를 이해할 수 있었습니다. 두 번째 세션에서는 AWS 클라우드 환경에서의 네트워킹이 어떻게 이루어지는지에 대한 기초적인 지식을 얻을 수 있었습니다. 마지막 세션은 API Gateway의 개념과 기능에 대해 더 깊이 알아보고 싶어 참석했습니다. 세션 제목처럼 API Gateway가 제공하는 다양한 기능에 대해 알게 되어 놀랐습니다.안녕하세요. 요기요의 Order & Commerce 팀에서 주문 및 장바구니의 백엔드 개발을 담당하고 있는 한승운입니다.Re:invent에서 5일 동안 2,000개가 넘는 기술 세션들이 열렸고, 많은 세션들 사이에 제 관심을 끈 세션들을 예약해보니 크게 3가지 주제로 구분할 수 있었습니다.첫 번째 주제는 Python으로 Lambda를 효과적으로 사용하는 방법에 관한 강의들입니다. Pyt
awsauroradb
python
rust
지에스리테일
Rust 찍어먹기
안녕하세요, 저는 물류서비스팀 센터파트에서 백엔드 개발을 하는 고형규입니다!회사에서 영어 이름은 민수입니다. 회사에서 "Rust 찍어먹기" 라는 주제로 세미나를 진행했습니다.발표 내용을 조금 참조하여 글을 적으려고 합니다. 게임 아닙니다 이 글은 Rust를 영업하기 위한 글입니다.Rust의 모든 내용을 담고있지 않고 Rust를 부담 없이찍어먹는 수준의 개념과 이해를 위해 작성하였습니다 :)  목차 0. 간단한 소개1. 불변성2. Shadowing3. Ownership4. 참조자 (References)와 빌림 (Borrow)5. 가변 참조자 (Mutable References)6. 타입 추론7. Option8. Match9. Result10. 느낀점  # Rust awesome projects메이저한 언어에 비해아직 생태계가 미숙하다고 할 수 있지만애플리케이션, 개발 도구, Library 같은 어썸한 프로젝트들이 있습니다. 그 중 Tauri VS. Electron 를 보고Rust에 빠지게 됐습니다 :) 멋진 팀원 분들과 어썸한 개발 문화를 만들어서언젠가 Rust로 빠르고 신뢰도 높은서비스를 만들어보는게 목표입니다 :)  # Rust 로고공식로고, https://www.rust-lang.org/ 녹이 잘 어울릴법한 톱니바퀴 모양이 공식 로고 입니다.  비공식로고, https://pbs.twimg.com/media/ELO0ClVUEAIAaWC?format=jpg&name=medium게 (Ferris) 캐릭터는Rust의 비공식 캐릭터입니다. Rust 공식 문서의 예제 중코드블록 오른쪽에 Ferris가 하나씩 있습니다. 포즈에 따라 의미가 다릅니다 :)파일을 읽는 예제, https://doc.rust-lang.org/book/ch09-02-recoverable-errors-with-result.html 게 귀여워서 할 맛이 납니다.   # Rust가 만들어진 계기 해외 커뮤니티인 Hacker News에Rust started as a personal project in 2006 라는 제목으로 글이 올라왔습니다. 2006년 Mozila 개발자였던 Graydon Hoare는퇴근 후 엘리베이터를 타려 했는데엘리베이터가 고장이 났다고 합니다. 21층까지 걸어서 올라가야 하는 상황이 발생했습니다. 2006년도면아마 엘리베이터의 소프트웨어는대부분 C 혹은 C++ 일 것으로 예상이 됩니다. 그 계기로 Graydon Hoare는안전한 소프트웨어를 만들기 위해 Rust을 개인 프로젝트로 시작했다고 합니다. 걸어 올라가기 싫은 만큼안전을 우선적으로 한 언어가 아닌가 싶습니다 :) 이제 Rust의 매력에 대해 알아볼까 합니다.  # 슈퍼어썸 컴파일 오류 아직 경험이 많지 않지만이렇게 친절한 오류 메시는 처음 보았습니다. <>HTML 삽입미리보기할 수 없는 소스어느 부분을 수정해야 하는지어떻게 바꾸면 좋은지 가이드를 제공합니다. 따봉https://tenor.com/ko/view/ok-all-nice-gif-22927671  # 불변성변수를 선언하게 되면기본적으로 불변성
java
rust
Copyright © 2024. Codenary All Rights Reserved.