logo
기술 블로그
logo
[신청 시작] 4월 우아한테크세미나: Java의 미래, Virtual Thread
[신청 시작] 4월 우아한테크세미나: Java의 미래, Virtual Thread4월 우아한테크세미나 : Java의 미래, Virtual Thread• 신청하신 분들께 세미나가 끝난 뒤 발표 자료(.pdf)를 보내 드립니다.ㅤ Virtual Thread는 기존 Java의 스레드 모델을 탈바꿈하여, 긴 I/O blocking time, 잦은 Context switching이 발생하는 서버 환경에 맞는 경량 스레드 기술입니다.2023년에 JDK21에 정식 feature로 등록된 기술로 기존의 Thread per request 방식보다 훨씬 훌륭한 성능을 보여주며, Reactive Streams 방식보다 더 쉽게 적용할 수 있습니다.4월 우아한테크세미나에서는 이러한 장점을 가진 Virtual Thread의 동작원리에 대해 알아보고, JDK 소스코드를 살펴보면서 구현 방식에 대해 탐구해 봅니다. 또한 Virtual Thread를 모의 서버에 적용하여 성능 테스트를 한 결과를 통해 기존 스레도 모델과의 비교해 봅니다. 마지막으론 Virtual Thread를 사용할 때 유의할 점에 대해 숙지하여, 실 프로젝트에 적용할 때 고려해야 될 점을 제시해 드립니다.대용량 트래픽을 다루거나, 한정된 리소스로 서버를 운영하시는 분들이라면, 이번 세미나를 통해 Virtual Thread 적용을 고민해 보시는 건 어떨까요?*참고 기술블로그 : Java의 미래, Virtual Thread ㅤ• Java를 다루는 서버 개발자• 대용량 트래픽 서버를 구축해야 하는 개발자 ㅤ• 우아한형제들 회원프로덕트팀에서 4년차 서버개발자로 일하고 있습니다. 배달의민족의 회원/인증/게이트웨이 시스템을 담당하고 있습니다.
우아한형제들
·
3일 전
logo
생성형 AI 기반 코딩 툴의 장점과 단점
이 글은 IDG의 아티클을 전재하여 제공함을 알려 드립니다. [원문보기] : https://www.ciokorea.com/column/332463생성형 AI 기반 코딩 툴은 자연어 프롬프트 또는 부분적인 코드 입력을 기반으로 코드를 작성합니다. 개발자는 이런 툴을 사용해 코드를 더 빠르게, 더 정확하게 작성할 수 있습니다. (일부 이메일 플랫폼과 마찬가지로 실시간으로 작성되는 코드를 자동 완성할 수 있도록 제안하기도 합니다.) AI 기반 코드 생성 툴은 소프트웨어 엔지니어링 분야에서 점점 더 널리 보급되고 있으며, 생성형 AI를 실험하는 대부분 기업에서 큰 성과를 거두고 있습니다. 도입률이 급증하는 이유는 자동화 도구가 새로운 애플리케이션에 대한 코드의 기준선만 제시하더라도 수동 코드 작성 및 업데이트에 소요되던 시간을 절약할 수 있기 때문입니다.대세가 되어가는 AI 코딩 어시스턴트소프트웨어 개발 전문 시장조사기관인 에반스 데이터 코퍼레이션(Evans Data Corp.)이 최근에 434명의 AI/ML 개발자를 대상으로 실시한 설문조사에서 ‘생성형 AI 툴을 사용해 가장 많이 생성할 것으로 예상되는 것이 무엇이냐’는 질문에 가장 많은 응답자가 소프트웨어 코드라고 답했고, 알고리즘과 LLM이 뒤를 이었습니다. 또한 응답자들은 생성형 AI가 개발 주기를 단축하고 ML 기능을 더 쉽게 추가할 수 있을 것으로 기대했습니다. 가트너 리서치는 2027년까지 전문 개발자의 70%가 AI 기반 코딩 툴을 사용할 것으로 전망했습니다. 이는 2023년 9월 기준 10% 미만이었던 것에서 증가한 수치입니다. 또한 3년 이내에 기업 80%가 소프트웨어 엔지니어링 툴체인에 AI 증강 테스트 툴을 통합할 것이며, 이는 작년 초의 약 15%에서 크게 증가한 수치라고 가트너는 예측했습니다. 생성형 AI 자동화 소프트웨어 개발에 가장 많이 사용되는 툴 중 하나는 깃허브 코파일럿입니다. 깃허브 코파일럿은 깃허브, 오픈AI, 마이크로소프트가 개발한 생성형 AI 모델로 구동하며, 공개 리포지토리에 나타나는 모든 자연어를 학습합니다. 마이크로소프트의 개발자 부문 부사장 아만다 실버에 따르면, 지난해 비즈니스용 깃허브 코파일럿이 출시된 이후 5만 곳 이상의 기업이 해당 서비스를 사용하기로 등록했습니다. 여기에는 엣시(Etsy), 헬로프레시(HelloFresh) 같은 디지털 네이티브 기업은 물론 오토데스크, 델 테크놀로지스, 골드만삭스 등 유수의 기업도 포함돼 있습니다. 실버에 따르면, 현재 깃허브 코파일럿은 130만 명 이상의 유료 구독자를 보유하고 있으며, 최대 고객은 5만 개의 라이선스를 보유한 액센추어입니다. 깃허브의 코파일럿과 함께 가장 인기 있는 코드 생성 툴로는 구글 바드, 아마존 코드위스퍼러, 마이크로소프트 365 코파일럿(GPT 기반), 리플리트(Replit), 디비 AI(Divi AI), 탭나인(Tabnine), 리팩트닷에이아이(Refact.ai), 코디움(Codeium) 등이 있습니다. 대부분은 무료이거나 AI 지원 구독 서비스 일부로 제공됩니다.코드는 늘어
삼성SDS
·
3일 전
logo
당근에서 LLM 활용하기
들어가며ChatGPT가 등장한 이후 구글, 메타와 같은 빅테크들이 앞다투어 LLM을 출시하면서 바야흐로 LLM의 시대가 열렸어요. 당근에서는 LLM을 어떻게 활용하고 있는지 소개하고 또 앞으로 어떻게 나아가면 좋을지 이야기해 보려고 해요.A timeline of existing large language modelsLLM이 잘하는 일LLM은 수많은 텍스트 데이터를 학습해서 세상에 대한 지식, 언어 이해 능력 그리고 뛰어난 추론 능력을 갖추고 있어요. 별도의 학습 없이도 주어진 텍스트를 이해하고 지시한 작업을 수행할 수 있어요. 하지만 딥러닝 모델을 학습해서 해결하던 문제들을 모두 대신할 수 있는 것은 아니에요. LLM이 잘할 수 있는 일들은 크게 다음과 같이 생각해 볼 수 있어요.1. 자연어 처리: 텍스트 분석, 추출, 분류자연어로 된 데이터를 분석해서 문장을 분류하거나 특정 내용을 추출하는 등의 작업은 전통적으로 NLP라고 부르면서 머신러닝과 딥러닝으로 수행해 온 일이에요. 대량의 데이터 수집, 데이터 라벨링, 모델 학습, 모델 평가의 반복과 모델 서빙으로 이어지는 머신러닝 라이프 사이클이 필요하고 전문적인 머신러닝 또는 딥러닝 지식이 있어야 수행할 수 있었어요.Traditional ML project lifecycle하지만 LLM의 등장으로 간단한 프롬프트 작성만으로 해당 테스크에 학습된 모델과 비슷하거나 더 뛰어난 성능으로 같은 작업을 수행할 수 있게 되었어요. 예를 들어 주어진 텍스트에서 중요한 키워드를 추출하는 모델을 만들고 싶다면 학습을 할 수 있는 데이터를 준비하는 것부터 시작해서 많은 작업들이 필요했는데요, LLM에게 “이 텍스트에서 중요한 키워드를 3개 추출해 줘.” 라는 간단한 지시를 하는 것 만으로 같은 일을 수행할 수 있어요.LLM으로 별도의 학습 없이 자연어 처리 작업을 수행할 수 있어요2. 사람의 질문에 대답하기LLM은 질문과 글을 잘 이해하고 글을 만들어내는 일에 뛰어나기 때문에 질문에 대답하는 일에도 잘 활용할 수 있어요. 이를 활용하면 사람의 질문에 대답하면서 사람의 일을 돕는 Assistant 형태의 서비스나, 사람이 대답하는 역할을 완전히 대신하는 Agent 형태의 서비스도 가능해요. 기본적으로는 LLM이 학습을 통해 배워서 가지고 있는 지식을 기반으로 대답하게 되지만 답변에 필요한 정보를 먼저 찾아서 LLM에게 질문과 함께 넘겨주는 방식 (retrieval-augmented generation = RAG) 을 사용하기도 해요. 이를 통해 특정 문서나 서비스의 데이터베이스에 있는 정보에 기반해서 답변을 생성할 수 있어요. RAG를 사용하면 사용자의 당근 이용 기록이나 운영 매뉴얼을 참고해서 사용자의 문의에 정확한 답을 해주는 서비스도 만들 수 있어요.Retrieval Augmented Generation3. 창의적인 글짓기LLM은 새로운 글을 만들어내는 능력이 뛰어나요. 이를 활용하면 주어진 지시에 따라 창의적으로 편지나 소설 같은 글을 만들어내는 작업을 할 수 있어요. 당근에서 창의적인 글짓기를 활용한
당근
·
3일 전
logo
[Cloud FinOps] 당신의 Cloud 비용은 안녕하신가요???
안녕하세요, 도선입니다.저는 SK텔레콤에서 Cloud Radar의 AI/ML 서비스를 개발 및 운영하고 있습니다.FinOps 플랫폼인 Cloud Radar는 SKT의 Cloud 고객에게 제공하는 CMP(Cloud Management Platform) 솔루션의 이름 입니다.작년에는 Cloud 비용 절감을 위한 자원최적화, 약정최적화, Cost Explorer & Report 등 다양한 기능이 추가 개발되었습니다.그리고 제품의 우수성을 인정 받아서 2024 MWC에서 GLOMO 어워드를 수상하였습니다. 구성원의 한사람으로써 매우 자랑스럽고 뿌듯함을 느낍니다.이런 말씀을 드린 이유는 이번 포스팅에서 Cloud 비용 절감과 관련된 이야기를 하려고 하기 때문입니다.주요 내용은 Cloud 비용 절감이 중요한 이유, 그런데 잘 안되는 이유, 그리고 비용 절감을 잘하기 위한 관리 요소 들에 대해서 이야기 해 보려 합니다.1.Cloud 비용 절감이 왜 중요한가?2.Cloud 비용 절감이 잘 안되는 이유1.Cloud 비용 절감이 왜 중요한가?현재 클라우드를 사용하는 대부분의 기업에 있어서 클라우드 비용 최적화는 절대적으로 중요한 요소가 되었습니다.Cloud 비용 최적화 또는 비용 절감이 중요해진 이유에는 경영환경의 변화, 클라우드의 도입/운영의 증가, 그리고 클라우드의 특성을 들 수 있습니다.가장 큰 이유는 비용절감이 기업 경영에 있어서 더욱 중요해졌기 때문입니다.2022년 코로나 발생으로 인해 전세계에서 인프레이션이 확대 되었으며, 이로 인해 물가가 오르고, 원자재와 같은 생산 원가가 높아 졌기 때문에 많은 기업에서 비용의 압박을 느끼고 있습니다.또한 이처럼 생산원가가 높은 환경에서는 비용 절감이 곧 기업 경쟁력과 직결되기 때문에 더욱 중요성이 높아지고 있습니다.예를들어 비용을 줄일 수 있으면 수율이 높아져서 가격 경쟁력이 생기고 매출이 증대 됩니다.또한 절감한 비용으로 다른 곳에 투자하여 차별적 경쟁력을 확보할 수 있고 이로써 지속적인 경쟁 우위를 유지할 수 있습니다.클라우드의 도입/운영 증가클라우드는 기업이 더 빠르게 성장하고 변화에 대응할 수 있도록 시스템 개발 및 운영에 있어서 유연성과 확장성을 제공합니다.이러한 강점을 바탕으로해서 많은 기업에서 도입 및 적용하여 요즘은 클라우드를 안쓰는 기업이 거의 없습니다.대부분의 기업이 많은 시스템 중에서 작은 부분이라도 클라우드를 도입해서 운영하고 있습니다.즉, 많은 기업에서 클라우드를 사용하기 때문에 많은 영역에서 클라우드 비용절감이 점점 더 중요해진 것 입니다.특히 클라우드를 도입하고 운영하다보면 (빠른 서비스 개발, 조직 이슈 등) 다양한 이유로 인해서 자원을 최적화 하지 못하고 운영하는 경우가 발생할 수 있습니다.그래서 비용 절감/최적화에 대한 중요성은 더욱 높아지게 됩니다.마지막으로 클라우드 특성 때문에 비용절감의 중요성이 더욱 높아졌습니다. 여기서 말하는 클라우드 특성은 바로 유연성과 확장성 입니다.클라우드는 기업에게 시스템 개발/운영의 유연성과 확장성을 제공합니다. 클릭 한두번으로 자원을 생성
SK텔레콤
·
6일 전
logo
우아한형제들 디자인 시스템에 시각적 회귀 테스트 적용하기
안녕하세요, 우아한형제들 디자인 시스템 ‘우아한공방’의 웹 프론트엔드 개발자 금교영, 이수정입니다. (참고: 우아한형제들의 새로운 디자인 시스템 ‘우아한공방’을 소개합니다: 개발 편) 이번 글에서는 우아한공방에 시각적 회귀 테스트를 도입한 과정에 대해 이야기해 보려고 합니다.시각적 회귀 테스트(Visual Regression Test)는 코드 변경 전/후의 스크린샷을 비교해 차이를 감지하고 예기치 못한 오류를 확인하여 UI의 시각적 일관성을 제공할 수 있도록 하는 테스트입니다.그렇다면, 디자인 시스템에 시각적 회귀 테스트가 왜 필요할까요?우아한공방은 총 115가지의 UI 컴포넌트를 제공하고 있고 우아한형제들에서 운영하는 다양한 웹/앱 프로덕트에서 사용되고 있어요. 컴포넌트 단위 테스트의 커버리지를 91%로 유지하고 있지만, 단위 테스트로는 커버할 수 없는 UI 변경 사항이 있습니다.A 컴포넌트를 변경했는데 해당 컴포넌트를 의존하는 다른 컴포넌트가 예상 못한 방식으로 변경되면서 A 컴포넌트에 의존하는 모든 컴포넌트를 확인해야 하는 경우도 있고,디자인 시스템 패키지의 스타일 코드 전체에 영향을 미치는 작업으로 인해 모든 컴포넌트에 UI 변경 사항이 발생했는지 확인해야 하기도 했습니다.변경 사항을 일일이 확인하는 데에는 상당한 시간이 필요하고, 미세한 변화는 알아차리기 어렵습니다. 예상치 못한 변경 사항이 적용된 컴포넌트가 사용자에게 보여진다면 앱의 품질을 저하시키는 요인이 될 수 있고 사용자에게 불편함을 줄 수도 있습니다.이러한 문제를 해결하여 컴포넌트의 시각적 안정성을 확보하고자 시각적 회귀 테스트를 도입했습니다.그럼, 이제 시각적 회귀 테스트를 어떻게 구현했고, 이를 통해 어떻게 안정성을 확보할 수 있었는지 같이 살펴보시죠!시각적 회귀 테스트를 지원하는 도구에는 Playwright, BackstopJS, Chromatic 등이 있습니다. 저희는 다음과 같은 이유로 Playwright를 선택했습니다.• 무료로 사용 가능합니다.• HTML로 제공하는 테스트 리포트로 결과를 확인하고 디버깅할 수 있습니다.Chromatic의 경우 유료여서, BackstopJS는 한글을 지원하지 않아 제외했습니다.우아한공방에는 컴포넌트 개발을 위한 세 가지 환경이 있습니다.• 스토리북 : 디자이너도 쉽게 UI를 확인할 수 있어서 디자인 QA 용도로 사용합니다.• 테스트 앱 : SSR 환경과 다양한 번들러에서 컴포넌트가 잘 동작하는지 확인하기 위해서 운영하고 있습니다.• 공식 문서 사이트 : 디자이너와 개발자에게 사용 방법을 가이드 하는 웹사이트입니다.위 세 가지 중, 저희는 스토리북을 테스트베드로 선택했습니다. 그 이유는 가장 빠르게 시각적 회귀 테스트를 도입할 수 있는 방법이라고 판단했기 때문입니다. 구체적인 선정 기준은 다음과 같아요.• 추가 코드 작성이 적을 것시각적 회귀 테스트에서 비교할 엘리먼트를 정확하게 선택하는 것이 중요한데요. ‘공식문서 사이트’는 이 과정이 까다로워서 제외했어요. ‘테스트 앱’은 엘리먼트 선택은 비교적 용이했으나 모든 컴포넌트에
우아한형제들Tech
·
6일 전
logo
Spark Cluster 구축기
안녕하세요. 여기어때컴퍼니 공통플랫폼개발팀 데이터 엔지니어 앰버입니다.EC2로 Spark Cluster를 구성 해보았던 경험을 공유하면서 Spark를 처음 접하는 분들도 Spark Cluster의 전반적인 개념을 이해할 수 있도록 글을 작성해보았습니다.제가 속한 공통플랫폼개발팀은 더 많은 데이터(대용량)를, 빠르게 처리하도록 개선하고자 하는 니즈가 있었습니다. 데이터 엔지니어로서 주요 업무 중 하나는 데이터를 가공하는 것인데요. 이 중 데이터 웨어하우스에 적재하기 전, 원시 데이터(Raw Data)에서 원하는 형식으로 선택 및 가공하여 처리하는 작업이 있는데, 이를 ‘데이터 전처리’라고 말합니다. 이러한 데이터 전처리 및 이관 작업을 위해 오픈 소스 고속 분산 처리 엔진인 Spark를 사용하고 있습니다.필요에 따라 AWS의 EMR(Elastic MapReduce, AWS가 제공하는 빅데이터 플랫폼 서비스)를 사용하기도 하지만, 대부분의 경우 프로젝트에 속한 데이터를 단일 서버에 Spark를 설치하여 처리합니다. 그러나 단일 서버에서 작업하는 방식은 서버 메모리가 부족하면 처리할 수 있는 데이터의 양이나 처리 속도에 제한이 생기는 문제가 있습니다. 이와 같은 상황에서 시간 당 처리할 수 있는 데이터양을 늘리기 위해 Spark Cluster의 구축 필요성을 느끼게 되었습니다.Spark와 Hadoop은 어떤 관계인가? Spark Cluster 구성빅데이터 처리를 위한 도구로 주로 사용되는 Hadoop과 Spark를 비교하고, Spark Cluster를 구성할 때의 선택지에 대해 알아보겠습니다.Spark는 빅데이터 처리를 위한 오픈 소스 고속 분산처리 엔진이라고 간단히 소개를 드렸는데, Hadoop과 어떤 차이를 가지고 있을까요? Hadoop은 HDFS(Hadoop Distributed File System)라는 파일시스템과, Yarn이라는 리소스 관리 매니저, MapReduce를 활용하여 연산처리하는 데이터 분산 처리 시스템입니다. Spark와 Hadoop 모두 대용량의 데이터를 처리하는 데 사용되지만, 둘은 연산 방식에서 차이점을 가지고 있습니다. Hadoop은 Disk I/O를 기반으로 동작하기 때문에 연산 처리 속도의 한계를 갖는 반면, Spark는 인메모리로 데이터를 처리하기 때문에 실시간 스트리밍이 가능할 만큼 속도가 빨라서 Hadoop의 느린 연산속도를 보완합니다.Spark Cluster를 구성할 때는 파일 저장 및 처리 시스템과 리소스 매니저를 선택해야 합니다. 다양한 선택지들 중에서 가장 일반적으로 선택되는 구성은 “Hadoop의 HDFS 파일 처리 시스템과 Yarn 리소스 매니저”입니다.HDFS 파일 처리 시스템: Hadoop의 HDFS를 선택하는 경우, 동일한 시스템 내에서 데이터를 저장하고 처리하기 때문에 액세스 및 처리 속도가 우수합니다. 데이터가 클러스터 내에 머무르고 대량의 데이터를 빠르게 처리해야 하는 경우에 적합합니다.기타 선택지: AWS의 S3와 같은 클라우드 기반 스토리지를 사용하는 것도 다른 선택지가 될 수
여기어때컴퍼니
·
7일 전
기술 블로그 더 보기
Copyright © 2024. Codenary All Rights Reserved.