NEW
OpenAI API Beta Feature: Assistant API
OpenAI는 개발자들이 자신만의 AI 어시스턴트를 애플리케이션에 통합할 수 있도록 지원하는 Assistant API를 새롭게 선보였습니다.이 API는 명확한 지침, 모델, 도구, 파일 등을 활용하여 사용자 요청에 대한 지능적이고 맞춤형 응답을 제공합니다.Assistant API는 현재 다음과 같은 주요 기능을 지원합니다: Code Interpreter, File Search, Function Calling.다음 그림은 Assistant API를 설명하는 그림입니다.정의: 특정 목적에 맞게 설계된 AI로, OpenAI의 모델과 다양한 도구를 호출합니다.역할: Assistant는 특정한 기능(예: 개인 금융 관리)을 수행하도록 미리 설정된 지침과 도구를 사용하여 사용자 요청에 응답합니다.정의: Assistant와 사용자 간의 대화 세션을 나타냅니다.역할: Thread는 Message를 저장하고, 대화가 모델의 컨텍스트 길이를 초과하지 않도록 자동으로 잘라냅니다.• None 예: "은퇴 계획에 대한 대화"라는 주제로 Thread가 생성됩니다.*정의: Assistant 또는 사용자가 생성한 텍스트, 이미지, 파일 등의 콘텐츠입니다.역할: 메시지는 Thread에 저장되며, 대화의 흐름을 기록합니다.• None 예: 사용자의 메시지: "내 은퇴 계획에 얼마나 기여해야 하나요?" Assistant의 메시지: "매년 $478를 기여하는 것이 적합합니다."*정의: 특정 스레드에서 Assistant가 도구와 모델을 호출하여 작업을 수행하는 인스턴스.역할: Assistant가 실행 중 모델을 호출하거나 도구를 사용하는 일련의 과정입니다.• None 예: "코드 인터프리터를 사용하여 사용자의 질문을 처리하고 메시지를 생성."정의: Run의 일부로, Assistant가 작업을 수행하는 세부 단계.역할: Assistant가 도구를 호출하거나 메시지를 생성하는 등의 구체적인 작업을 보여줍니다. Run Step을 통해 Assistant 작업 과정을 자세히 확인할 수 있습니다.다음으로는 Assistant API의 개념과 주요 기능, 그리고 실질적인 활용 방법에 대해 살펴보겠습니다.Assistant API는 OpenAI 모델을 활용하여 맞춤형 AI Assistant를 구축할 수 있는 도구입니다.Assistant는 특정 목적에 따라 사용자 요청에 응답하며, 다양한 도구와 외부 데이터를 활용해 복잡한 작업을 수행할 수 있습니다.맞춤형 지침 제공: Assistant의 성격과 기능을 특정 지침에 맞게 조정할 수 있습니다.다양한 도구 지원: OpenAI가 제공하는 기본 도구(Code Interpreter, File Search)와 사용자가 직접 만든 도구(Function Calling)를 병렬로 활용할 수 있습니다.Persistent Threads: Assistant와 사용자가 대화 내역을 저장하고 관리할 수 있는 영구 스레드를 제공합니다. 스레드는 대화 기록을 보존하고 Context 길이를 초과하지 않도록 자동으로 관리합니다.파일 관리 및 생성: 다양한 형식의 파일(PDF,
11/21/2024
OpenAI API Beta Feature: Assistant API
NEW
OpenAI는 개발자들이 자신만의 AI 어시스턴트를 애플리케이션에 통합할 수 있도록 지원하는 Assistant API를 새롭게 선보였습니다.이 API는 명확한 지침, 모델, 도구, 파일 등을 활용하여 사용자 요청에 대한 지능적이고 맞춤형 응답을 제공합니다.Assistant API는 현재 다음과 같은 주요 기능을 지원합니다: Code Interpreter, File Search, Function Calling.다음 그림은 Assistant API를 설명하는 그림입니다.정의: 특정 목적에 맞게 설계된 AI로, OpenAI의 모델과 다양한 도구를 호출합니다.역할: Assistant는 특정한 기능(예: 개인 금융 관리)을 수행하도록 미리 설정된 지침과 도구를 사용하여 사용자 요청에 응답합니다.정의: Assistant와 사용자 간의 대화 세션을 나타냅니다.역할: Thread는 Message를 저장하고, 대화가 모델의 컨텍스트 길이를 초과하지 않도록 자동으로 잘라냅니다.• None 예: "은퇴 계획에 대한 대화"라는 주제로 Thread가 생성됩니다.*정의: Assistant 또는 사용자가 생성한 텍스트, 이미지, 파일 등의 콘텐츠입니다.역할: 메시지는 Thread에 저장되며, 대화의 흐름을 기록합니다.• None 예: 사용자의 메시지: "내 은퇴 계획에 얼마나 기여해야 하나요?" Assistant의 메시지: "매년 $478를 기여하는 것이 적합합니다."*정의: 특정 스레드에서 Assistant가 도구와 모델을 호출하여 작업을 수행하는 인스턴스.역할: Assistant가 실행 중 모델을 호출하거나 도구를 사용하는 일련의 과정입니다.• None 예: "코드 인터프리터를 사용하여 사용자의 질문을 처리하고 메시지를 생성."정의: Run의 일부로, Assistant가 작업을 수행하는 세부 단계.역할: Assistant가 도구를 호출하거나 메시지를 생성하는 등의 구체적인 작업을 보여줍니다. Run Step을 통해 Assistant 작업 과정을 자세히 확인할 수 있습니다.다음으로는 Assistant API의 개념과 주요 기능, 그리고 실질적인 활용 방법에 대해 살펴보겠습니다.Assistant API는 OpenAI 모델을 활용하여 맞춤형 AI Assistant를 구축할 수 있는 도구입니다.Assistant는 특정 목적에 따라 사용자 요청에 응답하며, 다양한 도구와 외부 데이터를 활용해 복잡한 작업을 수행할 수 있습니다.맞춤형 지침 제공: Assistant의 성격과 기능을 특정 지침에 맞게 조정할 수 있습니다.다양한 도구 지원: OpenAI가 제공하는 기본 도구(Code Interpreter, File Search)와 사용자가 직접 만든 도구(Function Calling)를 병렬로 활용할 수 있습니다.Persistent Threads: Assistant와 사용자가 대화 내역을 저장하고 관리할 수 있는 영구 스레드를 제공합니다. 스레드는 대화 기록을 보존하고 Context 길이를 초과하지 않도록 자동으로 관리합니다.파일 관리 및 생성: 다양한 형식의 파일(PDF,
2024.11.21
좋아요
별로에요
NEW
모델 정렬을 위한 효과적인 학습 전략
LLM은 인터넷 상의 다양한 텍스트 데이터를 수집한 대용량의 텍스트로 사전 학습 수행사전 학습 동안에는 LLM이 특정한 형태로 응답하거나 사용자의 요청에 따라 응답 하기를 기대하기는 어렵고,LLM이 언어에 대한 전체적인 이해도가 높아지고 바로 다음에 올 단어를 잘 예측하게 하기 위한 단계• None Llama-2: 10TB 분량의 코드, 블로그, 기사, 광고 등의 다양한 글이 섞인 텍스트 사용LLM이 사용자의 요청에 적절히 응답하기 위해 요청의 형식을 해석, 응답의 형태를 작성하여 요청과 응답이 잘 연결 및 정렬(aligment)되도록 추가 학습하는 것• None 지도(supervised): 학습 데이터에 정답(label)이 포함되어 있다는 의미• None 지시 데이터셋(instruction dataset): 지도 미세 조정에 사용하는 데이터셋. 사용자의 지시에 맞춰 응답한 데이터셋이라는 의미• None 지시사항(instruction): 사용자의 요구사항을 표현한 문장• None 입력(input): 답변을 하는데 필요한 데이터• None 출력(output): 지시사항과 입력을 바탕으로 한 정답 응답• None 텍스트(text): 지시사항, 입력, 출력을 정해진 포맷으로 하나로 묶은 데이터지시사항이 다양한 형태로 되어 있고 응답 데이터의 품질이 높을수록, 즉, 지시 데이터셋 품질이 높을수록 정렬한 모델의 답변 품질이 높아짐• None Less is More for Alignment(정렬을 위해서는 적은 것이 더 낫다): 메타, 2023. Llama 모델을 정렬하는데 선별한 1,000개 정도의 지시 데이터셋 이용• None Textbooks are All You Need(텍스트북이면 충분하다): 마이크로소프트, 2023. 파이썬 코드 생성 모델 파이(Phi)의 파라미터는 13억개사람이 더 선호하는 데이터를 선택한 데이터셋• None ChatGPT: 선호 데이터(chosen data)에 비선호 데이터(rejected data)보다 높은 점수를 주어 생성된 답변의 점수를 평가하는 리워드 모델(reward model) 만듦강화 학습에서 에이전트가 학습하는 방식에이전트(agent)가 환경(environment)에서 행동(action)을 하고, 행동에 따라 환경의 상태(state)가 바뀌고 행동에 대한 보상(reward) 부여에이전트가 연속적으로 수행하는 행동의 모음을 에피소드(episode)라고 지칭언어모델이 RLHF를 통해 학습하는 과정을 대입하면 다음 단어를 예측하는 토큰을 하나씩 생성(action)하는데,언어 모델이 텍스트를 모두 생성하면 리워드 모델(environment)이 텍스트를 평가하고 점수를 매김(reward)생성한 문장의 점수가 높아지는 방향으로 학습(episode)이 때, 보상을 높게 받는 데에만 집중하는 보상 해킹(reward haching)이 발생할 수 있음지도 미세 조정 모델을 기준으로 학습하는 모델이 가까운 범위에서 리워드 모델의 높은 점수를 찾도록 한다는 의미지도 미세 조정 모델을 기준으로 거리를 측정하므로 이를 참고 모
11/21/2024
모델 정렬을 위한 효과적인 학습 전략
NEW
LLM은 인터넷 상의 다양한 텍스트 데이터를 수집한 대용량의 텍스트로 사전 학습 수행사전 학습 동안에는 LLM이 특정한 형태로 응답하거나 사용자의 요청에 따라 응답 하기를 기대하기는 어렵고,LLM이 언어에 대한 전체적인 이해도가 높아지고 바로 다음에 올 단어를 잘 예측하게 하기 위한 단계• None Llama-2: 10TB 분량의 코드, 블로그, 기사, 광고 등의 다양한 글이 섞인 텍스트 사용LLM이 사용자의 요청에 적절히 응답하기 위해 요청의 형식을 해석, 응답의 형태를 작성하여 요청과 응답이 잘 연결 및 정렬(aligment)되도록 추가 학습하는 것• None 지도(supervised): 학습 데이터에 정답(label)이 포함되어 있다는 의미• None 지시 데이터셋(instruction dataset): 지도 미세 조정에 사용하는 데이터셋. 사용자의 지시에 맞춰 응답한 데이터셋이라는 의미• None 지시사항(instruction): 사용자의 요구사항을 표현한 문장• None 입력(input): 답변을 하는데 필요한 데이터• None 출력(output): 지시사항과 입력을 바탕으로 한 정답 응답• None 텍스트(text): 지시사항, 입력, 출력을 정해진 포맷으로 하나로 묶은 데이터지시사항이 다양한 형태로 되어 있고 응답 데이터의 품질이 높을수록, 즉, 지시 데이터셋 품질이 높을수록 정렬한 모델의 답변 품질이 높아짐• None Less is More for Alignment(정렬을 위해서는 적은 것이 더 낫다): 메타, 2023. Llama 모델을 정렬하는데 선별한 1,000개 정도의 지시 데이터셋 이용• None Textbooks are All You Need(텍스트북이면 충분하다): 마이크로소프트, 2023. 파이썬 코드 생성 모델 파이(Phi)의 파라미터는 13억개사람이 더 선호하는 데이터를 선택한 데이터셋• None ChatGPT: 선호 데이터(chosen data)에 비선호 데이터(rejected data)보다 높은 점수를 주어 생성된 답변의 점수를 평가하는 리워드 모델(reward model) 만듦강화 학습에서 에이전트가 학습하는 방식에이전트(agent)가 환경(environment)에서 행동(action)을 하고, 행동에 따라 환경의 상태(state)가 바뀌고 행동에 대한 보상(reward) 부여에이전트가 연속적으로 수행하는 행동의 모음을 에피소드(episode)라고 지칭언어모델이 RLHF를 통해 학습하는 과정을 대입하면 다음 단어를 예측하는 토큰을 하나씩 생성(action)하는데,언어 모델이 텍스트를 모두 생성하면 리워드 모델(environment)이 텍스트를 평가하고 점수를 매김(reward)생성한 문장의 점수가 높아지는 방향으로 학습(episode)이 때, 보상을 높게 받는 데에만 집중하는 보상 해킹(reward haching)이 발생할 수 있음지도 미세 조정 모델을 기준으로 학습하는 모델이 가까운 범위에서 리워드 모델의 높은 점수를 찾도록 한다는 의미지도 미세 조정 모델을 기준으로 거리를 측정하므로 이를 참고 모
2024.11.21
좋아요
별로에요
나야, 주문 - 주문시스템의 도전과 성장 이야기
안녕하세요. 무신사에서 주문을 담당하는 백엔드 엔지니어 박준호입니다.이번 글에서는 무신사의 주문 시스템이 수많은 변화에 대응하며 대규모 트래픽과 이벤트 시즌에도 안정적인 서비스를 유지하기 위해 어떤 방식으로 변화해왔는지, 그 여정을 공유하고자 합니다.왜 개선이 필요한가?무신사와 같은 커머스 플랫폼에서 주문 시스템은 핵심적인 역할을 담당합니다. 주문 처리 속도와 안정성은 고객 경험에 직접적인 영향을 미치며, 주문 데이터를 신뢰할 수 있어야 모든 비즈니스가 원활하게 운영될 수 있기 때문입니다.무신사는 블랙프라이데이(이하 무진장) 시즌마다 최고 매출과 주문 수를 경신하며 놀라운 성장세를 이어가고 있습니다. 이처럼 가파른 성장을 뒷받침하기 위해 주문 시스템도 지속적인 발전이 필요합니다.하지만, 주문 도메인은 복잡한 비즈니스 로직을 포함하기 때문에 보수적으로 개발되는 면이 있습니다. 버그나 장애가 발생할 경우 장애 정도나 발생 시간과 관계없이 치명적인 결과로 이어질 수 있기 때문입니다.예를 들어 무신사의 경우 2023년 겨울 무진장 기준으로 시간당 평균 주문액이 10억 원 이상으로, 15분의 장애를 가정했을 때 약 2억 5천만 원 이상의 손실이 발생한다는 계산을 할 수 있습니다.따라서 주문 도메인을 다룰 때는 안정성과 신뢰성을 유지하면서도 변화와 개선을 추구하는 것이 매우 중요한 과제이고, 이를 위해 강한 책임감을 가지고 시스템을 관리하는 자세가 필요합니다.무신사 2.0 주문서여정의 시작, 모놀리식 아키텍처와 그 한계초창기 무신사 스토어는 모놀리식 아키텍처 (Monolithic Architecture) 로 구성되어 있었습니다. 하나의 데이터베이스를 공유하며 매거진을 제외한 모든 도메인이 하나의 리포지토리로 관리되어 있었습니다.주문 외에도 결제, 재고, 상품, 회원, 쿠폰, 적립금 등 모든 주요 도메인이 하나의 어플리케이션 내에 통합되어 있었기 때문에 매우 복잡하고 유지보수하기 어려운 구조였습니다. 특히 주문 시스템은 스파게티 코드처럼 복잡하게 얽혀 있었고, 콜 스택이 지나치게 깊어 분석이 어려웠습니다. 이러한 복잡성은 새로운 기능 추가나 버그 수정 시 높은 리스크를 동반하게 만들었습니다.모놀리식 아키텍처 무신사 스토어이 시스템은 DB 의존도가 높은 구조로 모든 요청이 데이터베이스를 통해 처리되었기 때문에 성능 문제가 빈번히 발생했습니다. 특히 무진장과 같은 대규모 이벤트 시 요청이 데이터베이스로 몰리면서 사이트가 다운되는 일이 잦았는데, 서버 다운타임과 성능 저하는 매출에 직접적인 영향을 미치는 민감한 문제이므로 이벤트 시즌에는 안정적인 시스템 운영이 필수적이었습니다.매년 서버를 증설하고 시스템을 튜닝했지만, 가파르게 증가하는 트래픽을 따라잡지 못해 한계에 도달하기 일쑤였습니다. 최적화되지 않은 코드들이 성능적 한계를 보이면서 근본적인 아키텍처 변화의 필요성이 대두되었습니다.변화의 시작, 리팩토링성능 개선과 유지보수의 용이성, 그리고 개발 생산성 향상은 매우 중요한 개선의 시작이였습니다.이를 해결하기 위해 리팩토링을 시작했고, 첫 단계로 시스템의
awssqs
java
kafka
php
11/20/2024
나야, 주문 - 주문시스템의 도전과 성장 이야기
안녕하세요. 무신사에서 주문을 담당하는 백엔드 엔지니어 박준호입니다.이번 글에서는 무신사의 주문 시스템이 수많은 변화에 대응하며 대규모 트래픽과 이벤트 시즌에도 안정적인 서비스를 유지하기 위해 어떤 방식으로 변화해왔는지, 그 여정을 공유하고자 합니다.왜 개선이 필요한가?무신사와 같은 커머스 플랫폼에서 주문 시스템은 핵심적인 역할을 담당합니다. 주문 처리 속도와 안정성은 고객 경험에 직접적인 영향을 미치며, 주문 데이터를 신뢰할 수 있어야 모든 비즈니스가 원활하게 운영될 수 있기 때문입니다.무신사는 블랙프라이데이(이하 무진장) 시즌마다 최고 매출과 주문 수를 경신하며 놀라운 성장세를 이어가고 있습니다. 이처럼 가파른 성장을 뒷받침하기 위해 주문 시스템도 지속적인 발전이 필요합니다.하지만, 주문 도메인은 복잡한 비즈니스 로직을 포함하기 때문에 보수적으로 개발되는 면이 있습니다. 버그나 장애가 발생할 경우 장애 정도나 발생 시간과 관계없이 치명적인 결과로 이어질 수 있기 때문입니다.예를 들어 무신사의 경우 2023년 겨울 무진장 기준으로 시간당 평균 주문액이 10억 원 이상으로, 15분의 장애를 가정했을 때 약 2억 5천만 원 이상의 손실이 발생한다는 계산을 할 수 있습니다.따라서 주문 도메인을 다룰 때는 안정성과 신뢰성을 유지하면서도 변화와 개선을 추구하는 것이 매우 중요한 과제이고, 이를 위해 강한 책임감을 가지고 시스템을 관리하는 자세가 필요합니다.무신사 2.0 주문서여정의 시작, 모놀리식 아키텍처와 그 한계초창기 무신사 스토어는 모놀리식 아키텍처 (Monolithic Architecture) 로 구성되어 있었습니다. 하나의 데이터베이스를 공유하며 매거진을 제외한 모든 도메인이 하나의 리포지토리로 관리되어 있었습니다.주문 외에도 결제, 재고, 상품, 회원, 쿠폰, 적립금 등 모든 주요 도메인이 하나의 어플리케이션 내에 통합되어 있었기 때문에 매우 복잡하고 유지보수하기 어려운 구조였습니다. 특히 주문 시스템은 스파게티 코드처럼 복잡하게 얽혀 있었고, 콜 스택이 지나치게 깊어 분석이 어려웠습니다. 이러한 복잡성은 새로운 기능 추가나 버그 수정 시 높은 리스크를 동반하게 만들었습니다.모놀리식 아키텍처 무신사 스토어이 시스템은 DB 의존도가 높은 구조로 모든 요청이 데이터베이스를 통해 처리되었기 때문에 성능 문제가 빈번히 발생했습니다. 특히 무진장과 같은 대규모 이벤트 시 요청이 데이터베이스로 몰리면서 사이트가 다운되는 일이 잦았는데, 서버 다운타임과 성능 저하는 매출에 직접적인 영향을 미치는 민감한 문제이므로 이벤트 시즌에는 안정적인 시스템 운영이 필수적이었습니다.매년 서버를 증설하고 시스템을 튜닝했지만, 가파르게 증가하는 트래픽을 따라잡지 못해 한계에 도달하기 일쑤였습니다. 최적화되지 않은 코드들이 성능적 한계를 보이면서 근본적인 아키텍처 변화의 필요성이 대두되었습니다.변화의 시작, 리팩토링성능 개선과 유지보수의 용이성, 그리고 개발 생산성 향상은 매우 중요한 개선의 시작이였습니다.이를 해결하기 위해 리팩토링을 시작했고, 첫 단계로 시스템의
2024.11.20
awssqs
java
kafka
php
좋아요
별로에요
테이블링 백엔드 팀 온보딩 회고
반갑습니다! 테이블링에서 백엔드 개발하고 있는 서민혁입니다.옷이 점점 얇아지는 4월에 입사했는데, 이제는 장롱 속 두꺼운 옷들을 꺼내며 시간이 꽤 흘렀음을 실감합니다.테이블링 백엔드 팀에 합류하게 되면 약 3개월간 온 보딩 과정을 거치게 되는데요, 이번 글에서는 웰컴 키트와 온 보딩 과정을 공유하고 팀에 대해 간단히 소개하는 시간을 가져볼 예정입니다.성공한 회사의 상징웰컴 키트가장 먼저 소개드릴 건 웰컴 키트입니다. 긴장되는 마음을 달래며 상자를 열어본 기억이 있습니다.반가워요구성품으로는 텀블러, 노트와 팬, 치약 칫솔 그리고 테이블링 스티커 팩이 들어있는데요, 테이블링 웰컴 키트에 대해 더 자세히 알아보고 싶으시다면 링크를 참조해 주세요.장비웰컴 키트뿐 아니라 적당한 범위 내에서 원하는 장비를 선택할 수 있었습니다. 최신 맥북과 추가 모니터, 키보드와 마우스 그리고 트랙패드까지 개인의 취향에 맞게 작업 환경을 구성할 수 있었습니다.장팔사모가 있어야 효율이 올라가는 편입니다.이를 위해 사전에 구글폼을 제출했었는데요, 이런 세심함이 회사의 첫인상을 좋게 하고 업무 능률을 올리는 배려라고 느껴졌습니다.너 내 동료가 돼라 👨🏽🌾다음으로 소개드릴 내용은 백엔드 팀의 온 보딩 과정입니다.돌보미온 보딩 과정 동안 새로운 입사자가 길을 잃고 방황하지 않도록 돌보미 제도가 있었는데요, 간단한 회사 소개부터 업무에 필요한 내용까지 궁금한 점이 생기면 부담 없이 가장 먼저 물어볼 수 있는 동료가 있어서 쉽게 적응할 수 있었습니다.또 회사에서 3개월 동안 쓸 수 있는 돌보미 비용을 지급해 주어서 맛있는 밥과 티타임도 가질 수 있었습니다 ☕️과제 및 리뷰그리고 과제가 주어졌습니다. 간단한 CRUD 프로젝트를 진행하는 것이었는데요, 과제의 목적은 크게 3가지 정도로 정리될 수 있을 것 같습니다.툴과 프레임워크 그리고 환경에 익숙해지기팀 컨벤션 익히기새로 입사한 팀원의 스타일 공유가장 큰 이유로는 원활한 업무를 위해 팀에서 사용하고 있는 환경에 익숙해짐은 물론이거니와 컨벤션을 준수할 수 있도록 하는 것이었습니다.또 3차까지 구성된 과제는 한 단계 진행할 때마다 새로운 조건이 추가되면서 흥미를 돋우었는데요, 조금씩 복잡해지는 요구사항에 새로운 팀원이 어떻게 처리하는지 새로운 스타일이 있지는 않은지 확인하는 과정도 챙겨주셔서 좋았습니다.우리 백엔드팀은요지라, 슬랙 등의 협업 툴과 적극적인 PR을 통해 업무 이해관계자들 간에 의사소통을 원활히 합니다. 또 주간 회의를 통해 공유 사항 및 논의사항들을 정기적으로 이야기 나누며 각자 업무를 공유합니다.제가 지금까지 느낀 저희 팀원 분들은 각자 맡은 바 업무를 훌륭히 수행해 내는 멋있는 분들이셨습니다. 저 또한 언젠가 도메인에 익숙해지고 팀의 문화와 테이블링 성장에 기여를 할 수 있기를 바랍니다. 🔥끝으로회고를 하면서 온 보딩 시간이 얼마나 좋았는지 다시 한번 깨닫게 되었습니다. 이렇게 성숙한 문화를 미리 자리 잡아 주신 동료분들께 감사의 말씀을 전하며 이번 글 마무리하겠습니다.THANK YOU!테이블링 백엔드 팀 온보딩
11/20/2024
테이블링 백엔드 팀 온보딩 회고
반갑습니다! 테이블링에서 백엔드 개발하고 있는 서민혁입니다.옷이 점점 얇아지는 4월에 입사했는데, 이제는 장롱 속 두꺼운 옷들을 꺼내며 시간이 꽤 흘렀음을 실감합니다.테이블링 백엔드 팀에 합류하게 되면 약 3개월간 온 보딩 과정을 거치게 되는데요, 이번 글에서는 웰컴 키트와 온 보딩 과정을 공유하고 팀에 대해 간단히 소개하는 시간을 가져볼 예정입니다.성공한 회사의 상징웰컴 키트가장 먼저 소개드릴 건 웰컴 키트입니다. 긴장되는 마음을 달래며 상자를 열어본 기억이 있습니다.반가워요구성품으로는 텀블러, 노트와 팬, 치약 칫솔 그리고 테이블링 스티커 팩이 들어있는데요, 테이블링 웰컴 키트에 대해 더 자세히 알아보고 싶으시다면 링크를 참조해 주세요.장비웰컴 키트뿐 아니라 적당한 범위 내에서 원하는 장비를 선택할 수 있었습니다. 최신 맥북과 추가 모니터, 키보드와 마우스 그리고 트랙패드까지 개인의 취향에 맞게 작업 환경을 구성할 수 있었습니다.장팔사모가 있어야 효율이 올라가는 편입니다.이를 위해 사전에 구글폼을 제출했었는데요, 이런 세심함이 회사의 첫인상을 좋게 하고 업무 능률을 올리는 배려라고 느껴졌습니다.너 내 동료가 돼라 👨🏽🌾다음으로 소개드릴 내용은 백엔드 팀의 온 보딩 과정입니다.돌보미온 보딩 과정 동안 새로운 입사자가 길을 잃고 방황하지 않도록 돌보미 제도가 있었는데요, 간단한 회사 소개부터 업무에 필요한 내용까지 궁금한 점이 생기면 부담 없이 가장 먼저 물어볼 수 있는 동료가 있어서 쉽게 적응할 수 있었습니다.또 회사에서 3개월 동안 쓸 수 있는 돌보미 비용을 지급해 주어서 맛있는 밥과 티타임도 가질 수 있었습니다 ☕️과제 및 리뷰그리고 과제가 주어졌습니다. 간단한 CRUD 프로젝트를 진행하는 것이었는데요, 과제의 목적은 크게 3가지 정도로 정리될 수 있을 것 같습니다.툴과 프레임워크 그리고 환경에 익숙해지기팀 컨벤션 익히기새로 입사한 팀원의 스타일 공유가장 큰 이유로는 원활한 업무를 위해 팀에서 사용하고 있는 환경에 익숙해짐은 물론이거니와 컨벤션을 준수할 수 있도록 하는 것이었습니다.또 3차까지 구성된 과제는 한 단계 진행할 때마다 새로운 조건이 추가되면서 흥미를 돋우었는데요, 조금씩 복잡해지는 요구사항에 새로운 팀원이 어떻게 처리하는지 새로운 스타일이 있지는 않은지 확인하는 과정도 챙겨주셔서 좋았습니다.우리 백엔드팀은요지라, 슬랙 등의 협업 툴과 적극적인 PR을 통해 업무 이해관계자들 간에 의사소통을 원활히 합니다. 또 주간 회의를 통해 공유 사항 및 논의사항들을 정기적으로 이야기 나누며 각자 업무를 공유합니다.제가 지금까지 느낀 저희 팀원 분들은 각자 맡은 바 업무를 훌륭히 수행해 내는 멋있는 분들이셨습니다. 저 또한 언젠가 도메인에 익숙해지고 팀의 문화와 테이블링 성장에 기여를 할 수 있기를 바랍니다. 🔥끝으로회고를 하면서 온 보딩 시간이 얼마나 좋았는지 다시 한번 깨닫게 되었습니다. 이렇게 성숙한 문화를 미리 자리 잡아 주신 동료분들께 감사의 말씀을 전하며 이번 글 마무리하겠습니다.THANK YOU!테이블링 백엔드 팀 온보딩
2024.11.20
좋아요
별로에요
코틀린 함수형 프로그래밍의 길을 찾아서
uni.code 함수형 프로그래밍에 대한 스노우의 열정이 매우 잘 보이는 글입니다. 기초 예제부터 실무에서 사용하고 있는 예제까지 순서대로 잘 나열되어있어 따라 하기에도 부담 없을 것 같네요!larry.charry 서비스에 함수형 프로그래밍을 도입하고 싶다면 이 글을 추천드려요. 코드 구조를 완전히 전환하지 않아도 작은 부분부터 적용할 수 있는 유용한 방법들을 소개해주는 글입니다.안녕하세요. 해외결제서비스의 서버를 개발하고 있는 스노우입니다. 저는 자바에서의 제약이 큰 함수형 프로그래밍만으로도 큰 만족감을 느꼈습니다. 그러다 코틀린을 통해 더욱 확장된 함수형 프로그래밍의 다양한 장점을 활용해 보며 매료되었습니다.팀원들과 ‘코틀린을 다루는 기술’ 책으로 함께 스터디를 하면서 함수형 프로그래밍을 적용해 보려 노력했지만, 추상적인 이론에 가까워 실무에 적용이 쉽지 않았습니다. 또한 타 분야의 함수형 프로그래밍도 참고해보려 했으나 코틀린 백엔드에 적절한 사례를 쉽게 찾지 못했습니다.함수형 프로그래밍에 대한 이해를 높이고 실무에 적용하기 위해 개인적인 학습은 물론, 팀원들과도 3회 이상의 스터디를 진행했습니다. 이번 글에서는 수개월의 시행착오 과정에서 얻은 함수형 프로그래밍의 장점을 활용하는 실용적인 사례들을 소개하고, 코틀린 백엔드에서 이를 적용하는 길을 제시해 보려 합니다. 코틀린에 함수형 프로그래밍을 적용하고는 싶은데, 실무에 적용할 만한 마땅한 사례를 찾지 못한 분들께 이 글을 추천합니다.쉽게 따라 할 수 있는 베스트 프랙티스의 부재함수형 프로그래밍을 배우면서 가장 힘들었던 부분은 쉽게 믿고 따라갈 만한 사례가 부족하다는 점이었습니다. 책이나 인터넷에서 함수형 프로그래밍을 검색하면 펑터, 어플리캐티브, 모노이드, 모나드 등 지나치게 복잡한 개념과 무엇인가 심오해 보이는 코드 예제들이 많이 나옵니다. 이러한 개념을 이해하지 못하면 함수형 프로그래밍을 제대로 사용하지 못한다고 이야기하며, 모나드에 대한 환상 같은 이야기들이 등장합니다. 하지만 이러한 어려운 개념들은 실무에서 필요한 문제를 해결하는 데 반드시 필요한 것은 아닙니다.실무에서는 부수 효과가 필요한 경우도 많고, 너무 어려운 코딩은 결국 대중화되기 어려운 면이 있습니다. 심지어 내가 혼자 모나드를 잘 활용한다고 해도 함께 일하는 팀원들이 이해하고 수정하지 못하면 쓸모가 없습니다. 따라서 이 글에서는 쉽게 믿고 따라갈 만한 함수형 프로그래밍의 사례를 소개하려 합니다.순서대로 따라 하기 좋은 4가지 함수형 프로그래밍 실무 활용 전략함수형 프로그래밍을 실무에 적용하기 위해서는 어떤 전략이 필요할까요?여러 차례 스터디하고 실무에 적용해 보면서 부딪쳐본 경험 상 처음부터 복잡한 기술보다는 간단하면서도 효과적인 방법을 먼저 익히고, 이를 바탕으로 점차 복잡한 기법으로 학습을 진행하는 것이 개인적으로 효과적이었습니다.아래에는 구체적인 기법들을 네 가지로 분류하여 난이도가 쉬운 것에서 어려운 것으로 높여가면서 설명드리겠습니다. 하나씩 순서대로 따라 하며 실무에 적용해 보시는 걸 추천합니다.개인적으
kotlin
11/20/2024
코틀린 함수형 프로그래밍의 길을 찾아서
uni.code 함수형 프로그래밍에 대한 스노우의 열정이 매우 잘 보이는 글입니다. 기초 예제부터 실무에서 사용하고 있는 예제까지 순서대로 잘 나열되어있어 따라 하기에도 부담 없을 것 같네요!larry.charry 서비스에 함수형 프로그래밍을 도입하고 싶다면 이 글을 추천드려요. 코드 구조를 완전히 전환하지 않아도 작은 부분부터 적용할 수 있는 유용한 방법들을 소개해주는 글입니다.안녕하세요. 해외결제서비스의 서버를 개발하고 있는 스노우입니다. 저는 자바에서의 제약이 큰 함수형 프로그래밍만으로도 큰 만족감을 느꼈습니다. 그러다 코틀린을 통해 더욱 확장된 함수형 프로그래밍의 다양한 장점을 활용해 보며 매료되었습니다.팀원들과 ‘코틀린을 다루는 기술’ 책으로 함께 스터디를 하면서 함수형 프로그래밍을 적용해 보려 노력했지만, 추상적인 이론에 가까워 실무에 적용이 쉽지 않았습니다. 또한 타 분야의 함수형 프로그래밍도 참고해보려 했으나 코틀린 백엔드에 적절한 사례를 쉽게 찾지 못했습니다.함수형 프로그래밍에 대한 이해를 높이고 실무에 적용하기 위해 개인적인 학습은 물론, 팀원들과도 3회 이상의 스터디를 진행했습니다. 이번 글에서는 수개월의 시행착오 과정에서 얻은 함수형 프로그래밍의 장점을 활용하는 실용적인 사례들을 소개하고, 코틀린 백엔드에서 이를 적용하는 길을 제시해 보려 합니다. 코틀린에 함수형 프로그래밍을 적용하고는 싶은데, 실무에 적용할 만한 마땅한 사례를 찾지 못한 분들께 이 글을 추천합니다.쉽게 따라 할 수 있는 베스트 프랙티스의 부재함수형 프로그래밍을 배우면서 가장 힘들었던 부분은 쉽게 믿고 따라갈 만한 사례가 부족하다는 점이었습니다. 책이나 인터넷에서 함수형 프로그래밍을 검색하면 펑터, 어플리캐티브, 모노이드, 모나드 등 지나치게 복잡한 개념과 무엇인가 심오해 보이는 코드 예제들이 많이 나옵니다. 이러한 개념을 이해하지 못하면 함수형 프로그래밍을 제대로 사용하지 못한다고 이야기하며, 모나드에 대한 환상 같은 이야기들이 등장합니다. 하지만 이러한 어려운 개념들은 실무에서 필요한 문제를 해결하는 데 반드시 필요한 것은 아닙니다.실무에서는 부수 효과가 필요한 경우도 많고, 너무 어려운 코딩은 결국 대중화되기 어려운 면이 있습니다. 심지어 내가 혼자 모나드를 잘 활용한다고 해도 함께 일하는 팀원들이 이해하고 수정하지 못하면 쓸모가 없습니다. 따라서 이 글에서는 쉽게 믿고 따라갈 만한 함수형 프로그래밍의 사례를 소개하려 합니다.순서대로 따라 하기 좋은 4가지 함수형 프로그래밍 실무 활용 전략함수형 프로그래밍을 실무에 적용하기 위해서는 어떤 전략이 필요할까요?여러 차례 스터디하고 실무에 적용해 보면서 부딪쳐본 경험 상 처음부터 복잡한 기술보다는 간단하면서도 효과적인 방법을 먼저 익히고, 이를 바탕으로 점차 복잡한 기법으로 학습을 진행하는 것이 개인적으로 효과적이었습니다.아래에는 구체적인 기법들을 네 가지로 분류하여 난이도가 쉬운 것에서 어려운 것으로 높여가면서 설명드리겠습니다. 하나씩 순서대로 따라 하며 실무에 적용해 보시는 걸 추천합니다.개인적으
2024.11.20
kotlin
좋아요
별로에요
대학생 참가자들의 if(kakaoAI)2024 후기
'모든 연결을 새롭게’라는 슬로건으로 진행된 if(kakaoAI)2024가 많은 분들의 관심 속에 성공적으로 마무리되었습니다. 특히 바쁜 일정에도 불구하고 첫째 날과 둘째 날 행사에 참석해 기술 세션과 다양한 네트워킹 프로그램을 소화하며 꼼꼼하게 후기를 남겨 준 대학생들의 이야기를 공유합니다. 특별히 이번 글에서는 카카오의 기술에 관심 있는 학생분들 중, 카카오테크 부트캠프와, (카카오가 후원하는) 구름톤 유니브(3기)에서 활동하는 분들의 이야기를 모아 보았어요.첫째 날의 모든 순간을 생생하게 기록한 '정람지’님의 후기를 소개합니다. 판교역 지하철 광고에서부터 카카오 AI 캠퍼스의 다양한 현장 모습, 기술 세션의 내용과 애프터 세션 장소까지, 사진을 풍부하게 담아내 주었습니다.오전 CEO의 키노트 '모든 연결을 새롭게’와, 카나나엑스 리더의 키노트 'AI mate와의 새로운 연결: Kanana’를 비롯해서, 아래와 같은 오후 기술 발표들에 참여하고, 들은 내용에 대해 스스로 소화한 내용과 생각을 정리했어요. 어렵거나 신기한 내용을 만날 땐 학교에서 배우는 지식과 현업의 차이를 생각하고, ‘언젠간 나도 하겠지’라는 멘트도 적어 주었어요.• 카카오 i를 통한 AIOT 서비스의 사례와 미래 (디케이테크인 - 김진호, 김덕형)• 이미지까지 이해하는 Multimodal LLM의 학습 방법 밝혀내기 (카카오 - 강우영)• FDS에 지속 성장하는 ML 적용 이야기 (카카오페이 - 이용희, 류선진)• AI를 통해 스팸을 대응하는 카카오의 노력 (카카오 - 오창화, 조혜연)• LLM으로 음성인식 성능 개선하기 (카카오 - 이지혜, 서혜지)카카오 AI 캠퍼스의 감각적인 분위기와 경치를 즐기며 우연히 만난 멘토와 대화를 나누는 등 다양한 사람들과의 교류가 특히 좋았다고 합니다. 캠퍼스 공간의 다양한 영상, 현수막들과 카나나의 카나, 나나 캐릭터 등 다양한 디자인에 대한 코멘트도 남겨주었어요.카카오의 AI 비전과 ‘Kanana’ 서비스에 관심을 보인 '김예지’님의 후기도 소개합니다. 김예지님은 오전의 Kanana X 리더의 키노트 'AI mate와의 새로운 연결: Kanana’부터, 오후의 다양한 세션까지 직접 참여하며 그 경험을 시간 순으로 정리해 주었습니다. 아래와 같은 세션들에 참여하며 많은 배움을 얻었다고 하며, 여러 세션에서 이해한 내용들도 정리해 주었습니다.• 최적의 LLM을 선택하는 방법: DUO (카카오뱅크 - 오주영, 김현규)• 데이터 분석과 머신러닝을 통한 유저 방문 맛집 발굴하기 (카카오 - 유효나, 양명한)• 공공데이터를 활용한 RAG 기술 구현 및 프레임워크 소개 (카카오엔터프라이즈 - 김도윤)• AI를 통해 스팸을 대응하는 카카오의 노력 (카카오 - 오창화, 조혜연)한편, Kanana 외에도 헬스케어 서비스 ‘파스타’, 로봇 배송 서비스 ‘브링’, 자율주행 기술 등 다양한 AI 기술을 체험하며 인상 깊었던 경험을 사진과 함께 공유해 주었습니다. 궁금했던 주제를 직접 들을 수 있었던 점과 LLM 기술 동향을 이해할 수 있었던 것도 좋았
11/20/2024
대학생 참가자들의 if(kakaoAI)2024 후기
'모든 연결을 새롭게’라는 슬로건으로 진행된 if(kakaoAI)2024가 많은 분들의 관심 속에 성공적으로 마무리되었습니다. 특히 바쁜 일정에도 불구하고 첫째 날과 둘째 날 행사에 참석해 기술 세션과 다양한 네트워킹 프로그램을 소화하며 꼼꼼하게 후기를 남겨 준 대학생들의 이야기를 공유합니다. 특별히 이번 글에서는 카카오의 기술에 관심 있는 학생분들 중, 카카오테크 부트캠프와, (카카오가 후원하는) 구름톤 유니브(3기)에서 활동하는 분들의 이야기를 모아 보았어요.첫째 날의 모든 순간을 생생하게 기록한 '정람지’님의 후기를 소개합니다. 판교역 지하철 광고에서부터 카카오 AI 캠퍼스의 다양한 현장 모습, 기술 세션의 내용과 애프터 세션 장소까지, 사진을 풍부하게 담아내 주었습니다.오전 CEO의 키노트 '모든 연결을 새롭게’와, 카나나엑스 리더의 키노트 'AI mate와의 새로운 연결: Kanana’를 비롯해서, 아래와 같은 오후 기술 발표들에 참여하고, 들은 내용에 대해 스스로 소화한 내용과 생각을 정리했어요. 어렵거나 신기한 내용을 만날 땐 학교에서 배우는 지식과 현업의 차이를 생각하고, ‘언젠간 나도 하겠지’라는 멘트도 적어 주었어요.• 카카오 i를 통한 AIOT 서비스의 사례와 미래 (디케이테크인 - 김진호, 김덕형)• 이미지까지 이해하는 Multimodal LLM의 학습 방법 밝혀내기 (카카오 - 강우영)• FDS에 지속 성장하는 ML 적용 이야기 (카카오페이 - 이용희, 류선진)• AI를 통해 스팸을 대응하는 카카오의 노력 (카카오 - 오창화, 조혜연)• LLM으로 음성인식 성능 개선하기 (카카오 - 이지혜, 서혜지)카카오 AI 캠퍼스의 감각적인 분위기와 경치를 즐기며 우연히 만난 멘토와 대화를 나누는 등 다양한 사람들과의 교류가 특히 좋았다고 합니다. 캠퍼스 공간의 다양한 영상, 현수막들과 카나나의 카나, 나나 캐릭터 등 다양한 디자인에 대한 코멘트도 남겨주었어요.카카오의 AI 비전과 ‘Kanana’ 서비스에 관심을 보인 '김예지’님의 후기도 소개합니다. 김예지님은 오전의 Kanana X 리더의 키노트 'AI mate와의 새로운 연결: Kanana’부터, 오후의 다양한 세션까지 직접 참여하며 그 경험을 시간 순으로 정리해 주었습니다. 아래와 같은 세션들에 참여하며 많은 배움을 얻었다고 하며, 여러 세션에서 이해한 내용들도 정리해 주었습니다.• 최적의 LLM을 선택하는 방법: DUO (카카오뱅크 - 오주영, 김현규)• 데이터 분석과 머신러닝을 통한 유저 방문 맛집 발굴하기 (카카오 - 유효나, 양명한)• 공공데이터를 활용한 RAG 기술 구현 및 프레임워크 소개 (카카오엔터프라이즈 - 김도윤)• AI를 통해 스팸을 대응하는 카카오의 노력 (카카오 - 오창화, 조혜연)한편, Kanana 외에도 헬스케어 서비스 ‘파스타’, 로봇 배송 서비스 ‘브링’, 자율주행 기술 등 다양한 AI 기술을 체험하며 인상 깊었던 경험을 사진과 함께 공유해 주었습니다. 궁금했던 주제를 직접 들을 수 있었던 점과 LLM 기술 동향을 이해할 수 있었던 것도 좋았
2024.11.20
좋아요
별로에요
웹앱 사용자 경험을 개선하는 기술 한 스푼
안녕하세요, SK플래닛에서 운영하는 블록체인 플랫폼 UPTN Station의 프론트엔드 개발을 담당하는 김찬민이라고 합니다.저는 입사하기 전부터 "나부터 사용하고 싶고, 네이티브 이상으로 부드러운 웹앱" 을 만들고 싶다는 꿈을 갖고 있었는데요, 이를 이루기 위해서는 작은 디테일들을 잡아내는 것이 중요하다고 생각했습니다.이번 글에서는 프론트엔드 개발자가 어떤 장치들을 도입해 사용자 경험을 개선했는지에 대한 이야기를 사진과 함께 가볍게 풀어보려 합니다.1년 전 UPTN Station을 처음 맡게 되었을 때의 기억이 아직도 생생한데요, 이 서비스가 과연 어떤 앱인지 파악하기 위해 직접 써보던 중 저는 화면을 가득 채우는 로딩 스피너가 제일 먼저 눈에 들어왔습니다.스피너는 페이지가 데이터를 불러오는 중임을 표시하는 효과적인 수단이지만, 사용자에게 어떤 화면이 나타날지를 미리 알려주지 않고 유저의 탐색 경험을 가로막는다는 점에서 좋지 않은 UI라고 생각했습니다.덧붙여 스피너를 표시하는 것은 PHP나 JSP 등 템플릿 엔진을 기반으로 한 고전적인 홈페이지에서 데이터를 불러오는 경험과 유사하다고 느꼈는데, 우리는 SPA 기반의 웹뷰 어플리케이션을 개발하고 있는 만큼 이보다 나은 UX를 제공할 수 있어야 한다고 생각했습니다.동일한 화면에 스켈레톤을 적용해본 모습입니다.단순히 로딩 중임을 알리는 스피너와 달리 스켈레톤 UI는 페이지 레이아웃과 구조를 미리 보여주어, 사용자가 어떤 정보를 보게 될지 미리 예측할 수 있도록 해줍니다.또한 FCP를 최소화하기 위해 SSR을 도입하는 것처럼 스켈레톤 UI는 비록 실제 로딩 시간은 동일하더라도 사용자가 더 빠르게 콘텐츠를 접하고 있다는 인식을 줄 수 있다는 효과가 있습니다.스켈레톤을 어떻게 잘 도입할 수 있을까?그렇다고 스켈레톤이 로딩 경험을 향상시키는 은탄환이 되어 준 것은 아니었습니다.높이가 고정되지 않은 UI와 컨텐츠의 길이를 예측할 수 없는 상황이 겹쳐 레이아웃 시프트가 발생할 수밖에 없는 상황도 있었고, 쿼리 개수가 적어 빠르게 로딩되는 페이지에서는 오히려 스켈레톤이 화면을 갑작스럽게 변화시킨다는 느낌을 주게 되었습니다.• 현재 (스켈레톤 대신 페이지 페이드 효과 적용)그래서 모든 스피너를 일괄적으로 스켈레톤으로 교체하기보다는 발생하는 네트워크 지연을 측정해, 비교적 짧은 지연이 예상되는 페이지에는 레이아웃 시프트를 발동할 염려가 없는 스피너, fade 효과 등을 대신 채택했습니다.한편, 스켈레톤이 필요할 때마다 마크업을 하는 것은 생각보다 많은 시간이 소요될 수도 있습니다.초기에는 위와 같은 형태로 스켈레톤을 페이지마다 구현하기도 했었는데요, 한정된 개발기간 내에 최대한의 생산성을 발휘하기 위해서는 마크업을 보다 쉽고 빠르게 마칠 수 있는 방법이 필요했습니다.저희는 공통으로 사용되는 애니메이션이 포함된 스켈레톤을 컴포넌트로 만들고, UI의 레이아웃을 제어하는 , , 등의 컴포넌트를 적절히 섞어 사용함으로써 스켈레톤 구현에 페이지당 약 5 ~ 10분 내외의 최소한의 시간만을 들이고 서비스 개발에 집중할
11/20/2024
웹앱 사용자 경험을 개선하는 기술 한 스푼
안녕하세요, SK플래닛에서 운영하는 블록체인 플랫폼 UPTN Station의 프론트엔드 개발을 담당하는 김찬민이라고 합니다.저는 입사하기 전부터 "나부터 사용하고 싶고, 네이티브 이상으로 부드러운 웹앱" 을 만들고 싶다는 꿈을 갖고 있었는데요, 이를 이루기 위해서는 작은 디테일들을 잡아내는 것이 중요하다고 생각했습니다.이번 글에서는 프론트엔드 개발자가 어떤 장치들을 도입해 사용자 경험을 개선했는지에 대한 이야기를 사진과 함께 가볍게 풀어보려 합니다.1년 전 UPTN Station을 처음 맡게 되었을 때의 기억이 아직도 생생한데요, 이 서비스가 과연 어떤 앱인지 파악하기 위해 직접 써보던 중 저는 화면을 가득 채우는 로딩 스피너가 제일 먼저 눈에 들어왔습니다.스피너는 페이지가 데이터를 불러오는 중임을 표시하는 효과적인 수단이지만, 사용자에게 어떤 화면이 나타날지를 미리 알려주지 않고 유저의 탐색 경험을 가로막는다는 점에서 좋지 않은 UI라고 생각했습니다.덧붙여 스피너를 표시하는 것은 PHP나 JSP 등 템플릿 엔진을 기반으로 한 고전적인 홈페이지에서 데이터를 불러오는 경험과 유사하다고 느꼈는데, 우리는 SPA 기반의 웹뷰 어플리케이션을 개발하고 있는 만큼 이보다 나은 UX를 제공할 수 있어야 한다고 생각했습니다.동일한 화면에 스켈레톤을 적용해본 모습입니다.단순히 로딩 중임을 알리는 스피너와 달리 스켈레톤 UI는 페이지 레이아웃과 구조를 미리 보여주어, 사용자가 어떤 정보를 보게 될지 미리 예측할 수 있도록 해줍니다.또한 FCP를 최소화하기 위해 SSR을 도입하는 것처럼 스켈레톤 UI는 비록 실제 로딩 시간은 동일하더라도 사용자가 더 빠르게 콘텐츠를 접하고 있다는 인식을 줄 수 있다는 효과가 있습니다.스켈레톤을 어떻게 잘 도입할 수 있을까?그렇다고 스켈레톤이 로딩 경험을 향상시키는 은탄환이 되어 준 것은 아니었습니다.높이가 고정되지 않은 UI와 컨텐츠의 길이를 예측할 수 없는 상황이 겹쳐 레이아웃 시프트가 발생할 수밖에 없는 상황도 있었고, 쿼리 개수가 적어 빠르게 로딩되는 페이지에서는 오히려 스켈레톤이 화면을 갑작스럽게 변화시킨다는 느낌을 주게 되었습니다.• 현재 (스켈레톤 대신 페이지 페이드 효과 적용)그래서 모든 스피너를 일괄적으로 스켈레톤으로 교체하기보다는 발생하는 네트워크 지연을 측정해, 비교적 짧은 지연이 예상되는 페이지에는 레이아웃 시프트를 발동할 염려가 없는 스피너, fade 효과 등을 대신 채택했습니다.한편, 스켈레톤이 필요할 때마다 마크업을 하는 것은 생각보다 많은 시간이 소요될 수도 있습니다.초기에는 위와 같은 형태로 스켈레톤을 페이지마다 구현하기도 했었는데요, 한정된 개발기간 내에 최대한의 생산성을 발휘하기 위해서는 마크업을 보다 쉽고 빠르게 마칠 수 있는 방법이 필요했습니다.저희는 공통으로 사용되는 애니메이션이 포함된 스켈레톤을 컴포넌트로 만들고, UI의 레이아웃을 제어하는 , , 등의 컴포넌트를 적절히 섞어 사용함으로써 스켈레톤 구현에 페이지당 약 5 ~ 10분 내외의 최소한의 시간만을 들이고 서비스 개발에 집중할
2024.11.20
좋아요
별로에요
[디지털 트윈 기술 #1] 현대오토에버 디지털 트윈 소개
안녕하세요. 저희는 현대오토에버에서 디지털트윈 솔루션을 개발하고 있습니다. 작년까지만 하더라도 디지털트윈은 개발자들 사이에서도 꽤나 생경한 단어 였는데요. 올해 초부터 불기 시작한 SDF(Software Defined Factory) 바람 덕인지, 이제는 제조분야에서도 제법 알려진 듯 합니다. 첫 발을 뗀 것이 2019년 말쯤이었는데, 어느새 4년이 흘렀네요. 그 동안 기술력과 관련 도메인 지식도 조금은 쌓인 것 같습니다. (아직 갈 길은 멀지만요;;) 앞으로 현대오토에버가 바라보는 디지털 트윈의 모습과 그 과정에서 쌓아두었던 이야기들을 얼마전에 완료한 완성차 양산 공장의 디지털트윈 구축사례를 들어 하나씩 풀어볼까 합니다. 모두 다섯 꼭지로 말씀 드릴텐데요. 오늘은 그 첫번째로 현대오토에버의 디지털트윈을 소개드립니다. 디지털 트윈 적용 분야 및 성숙도 모델디지털 트윈은 현실 세계의 물리적인 물체(사물 또는 기계 장치) 혹은 시스템을 가상 세계에서 동일하게 구현하는 기술입니다. 이 기술은 공장 장비의 단일 부품부터 AGV, 크레인 및 제어 시스템에 이르기까지 다양한 실제 환경을 복제하는 것을 목표로 합니다. 현재 여러 산업 분야에서 시스템의 가상화를 구축하기 위해 디지털 트윈을 적극 활용하고 있으며, 그 주요 분야는 다음과 같습니다.제조제조 분야에서는 디지털 트윈 기술이 설계 및 계획 단계부터 기존 시설의 유지보수에 이르기까지 전체 제조 수명 주기에 걸쳐 활용됩니다. 이 기술을 통해 장비를 지속적으로 모니터링하고, 플랜트 또는 특정 부분의 성능 데이터를 분석하여 운영 효율성을 향상시키고 있습니다.건설건설 분야에서는 디지털 트윈을 통해 주택, 건물 및 인프라 프로젝트를 보다 효과적으로 계획하고, 기존 프로젝트의 진행 상황을 실시간으로 파악할 수 있습니다. 건축가는 건물의 3D 모델링과 디지털 트윈 기술을 결합하여 설계를 최적화하며, 건물 관리자는 실시간 온도, 공기 질, 사용 현황 등의 데이터를 모니터링하여 입주자의 편의를 향상시키고 있습니다.에너지에너지 산업에서는 디지털 트윈을 통해 전략적인 프로젝트 계획을 지원하며, 해양 플랜트, 풍력 발전소 및 태양광 프로젝트와 같은 기존 자산의 성능과 수명 주기를 최적화하는 데 널리 활용되고 있습니다.의료 서비스의료 분야에서는 전체 병원, 의료 시설, 실험실 및 인체의 가상 트윈을 구축하여 신체 장기를 모델링하고 특정 치료법에 대한 환자의 반응을 시뮬레이션하는 등 다양한 목적으로 활용하고 있습니다.이처럼 디지털 트윈 기술은 여러 산업분야에서 운영의 최적화와 효율성을 향상시키는 데 기여하고 있으며, 앞으로도 새로운 활용 사례가 계속 확산될 것으로 기대됩니다. 특히, 자동차 제조분야에서는 디지털 트윈을 구축하는 데에는 여러 가지 이점이 있습니다. 다음은 그 주요 장점들입니다.원격 모니터링디지털 트윈의 가상화 특성을 활용하여 시설을 원격으로 모니터링하고 제어할 수 있습니다. 이를 통해 잠재적으로 위험한 산업 장비를 관리하는 데 필요한 인력을 줄일 수 있으며, 안전성을 높일 수 있습니다.예측 기능디지털 트
11/20/2024
[디지털 트윈 기술 #1] 현대오토에버 디지털 트윈 소개
안녕하세요. 저희는 현대오토에버에서 디지털트윈 솔루션을 개발하고 있습니다. 작년까지만 하더라도 디지털트윈은 개발자들 사이에서도 꽤나 생경한 단어 였는데요. 올해 초부터 불기 시작한 SDF(Software Defined Factory) 바람 덕인지, 이제는 제조분야에서도 제법 알려진 듯 합니다. 첫 발을 뗀 것이 2019년 말쯤이었는데, 어느새 4년이 흘렀네요. 그 동안 기술력과 관련 도메인 지식도 조금은 쌓인 것 같습니다. (아직 갈 길은 멀지만요;;) 앞으로 현대오토에버가 바라보는 디지털 트윈의 모습과 그 과정에서 쌓아두었던 이야기들을 얼마전에 완료한 완성차 양산 공장의 디지털트윈 구축사례를 들어 하나씩 풀어볼까 합니다. 모두 다섯 꼭지로 말씀 드릴텐데요. 오늘은 그 첫번째로 현대오토에버의 디지털트윈을 소개드립니다. 디지털 트윈 적용 분야 및 성숙도 모델디지털 트윈은 현실 세계의 물리적인 물체(사물 또는 기계 장치) 혹은 시스템을 가상 세계에서 동일하게 구현하는 기술입니다. 이 기술은 공장 장비의 단일 부품부터 AGV, 크레인 및 제어 시스템에 이르기까지 다양한 실제 환경을 복제하는 것을 목표로 합니다. 현재 여러 산업 분야에서 시스템의 가상화를 구축하기 위해 디지털 트윈을 적극 활용하고 있으며, 그 주요 분야는 다음과 같습니다.제조제조 분야에서는 디지털 트윈 기술이 설계 및 계획 단계부터 기존 시설의 유지보수에 이르기까지 전체 제조 수명 주기에 걸쳐 활용됩니다. 이 기술을 통해 장비를 지속적으로 모니터링하고, 플랜트 또는 특정 부분의 성능 데이터를 분석하여 운영 효율성을 향상시키고 있습니다.건설건설 분야에서는 디지털 트윈을 통해 주택, 건물 및 인프라 프로젝트를 보다 효과적으로 계획하고, 기존 프로젝트의 진행 상황을 실시간으로 파악할 수 있습니다. 건축가는 건물의 3D 모델링과 디지털 트윈 기술을 결합하여 설계를 최적화하며, 건물 관리자는 실시간 온도, 공기 질, 사용 현황 등의 데이터를 모니터링하여 입주자의 편의를 향상시키고 있습니다.에너지에너지 산업에서는 디지털 트윈을 통해 전략적인 프로젝트 계획을 지원하며, 해양 플랜트, 풍력 발전소 및 태양광 프로젝트와 같은 기존 자산의 성능과 수명 주기를 최적화하는 데 널리 활용되고 있습니다.의료 서비스의료 분야에서는 전체 병원, 의료 시설, 실험실 및 인체의 가상 트윈을 구축하여 신체 장기를 모델링하고 특정 치료법에 대한 환자의 반응을 시뮬레이션하는 등 다양한 목적으로 활용하고 있습니다.이처럼 디지털 트윈 기술은 여러 산업분야에서 운영의 최적화와 효율성을 향상시키는 데 기여하고 있으며, 앞으로도 새로운 활용 사례가 계속 확산될 것으로 기대됩니다. 특히, 자동차 제조분야에서는 디지털 트윈을 구축하는 데에는 여러 가지 이점이 있습니다. 다음은 그 주요 장점들입니다.원격 모니터링디지털 트윈의 가상화 특성을 활용하여 시설을 원격으로 모니터링하고 제어할 수 있습니다. 이를 통해 잠재적으로 위험한 산업 장비를 관리하는 데 필요한 인력을 줄일 수 있으며, 안전성을 높일 수 있습니다.예측 기능디지털 트
2024.11.20
좋아요
별로에요
허깅페이스 트랜스포머 라이브러리 사용방법
다양한 트랜스포머 모델을 통일된 인터페이스로 사용할 수 있도록 지원하는 오픈소스 라이브러리허깅페이스가 없다면 새로운 트랜스포머 모델이 공개될 때마다 어떤 인터페이스를 사용하며, 어떤 함수를 써야 하는지 일일이 다 찾아봐야 할 것허깅페이스를 통해 우리는 사용하고자 하는 트랜스포머 모델을 불러오고, 학습시키고, 이를 통해 추론하기만 하면 된다.두가지 다른 모델을 사용했을 때의 코드 비교학습 모델을 탐색할 수 있는 모델 허브와 데이터셋을 가져올 수 있는 데이터셋 허브가 존재허깅페이스 라이브러리 사용법허깅페이스 모델은 바디와 헤드로 구분되어 있다. 같은 바디를 사용하면서 헤드만 바꾸어 사용할 수도 있기 때문에 모델 활용시 각 작업에 맞게 따로 분리해서 불러온다.위 예제중 두번째는 텍스트 시퀀스 분류를 위한 헤드가 포함된 모델을 불러올때 사용하는 코드이다.만약 여기서 model_id에 헤드가 없이 바디만 있는 모델 id를 넣는다면 warning이 뜨고 분류 헤드는 랜덤으로 초기화가 된다.토크나이저는 텍스트를 토큰 단위로 나누어 토큰을 id값으로 변환한다.token_type_ids는 첫번째 문장이면 0, 아니면 1을 나타내는 값이고 attention_mask값은 패딩 토큰인지 실제 토큰인지를 나타내는 값이다.decode를 통해서 토큰단위로 나눈 문장을 다시 합칠수 있고, CLS, SEP는 문장의 시작과 끝을 나타내는 특수 토큰이다.첫번째 처럼 두 문장을 각각 list에 넣을수도 있고, 두 문장을 합쳐서 하나로 토크나이징 할 수도 있다.
11/20/2024
허깅페이스 트랜스포머 라이브러리 사용방법
다양한 트랜스포머 모델을 통일된 인터페이스로 사용할 수 있도록 지원하는 오픈소스 라이브러리허깅페이스가 없다면 새로운 트랜스포머 모델이 공개될 때마다 어떤 인터페이스를 사용하며, 어떤 함수를 써야 하는지 일일이 다 찾아봐야 할 것허깅페이스를 통해 우리는 사용하고자 하는 트랜스포머 모델을 불러오고, 학습시키고, 이를 통해 추론하기만 하면 된다.두가지 다른 모델을 사용했을 때의 코드 비교학습 모델을 탐색할 수 있는 모델 허브와 데이터셋을 가져올 수 있는 데이터셋 허브가 존재허깅페이스 라이브러리 사용법허깅페이스 모델은 바디와 헤드로 구분되어 있다. 같은 바디를 사용하면서 헤드만 바꾸어 사용할 수도 있기 때문에 모델 활용시 각 작업에 맞게 따로 분리해서 불러온다.위 예제중 두번째는 텍스트 시퀀스 분류를 위한 헤드가 포함된 모델을 불러올때 사용하는 코드이다.만약 여기서 model_id에 헤드가 없이 바디만 있는 모델 id를 넣는다면 warning이 뜨고 분류 헤드는 랜덤으로 초기화가 된다.토크나이저는 텍스트를 토큰 단위로 나누어 토큰을 id값으로 변환한다.token_type_ids는 첫번째 문장이면 0, 아니면 1을 나타내는 값이고 attention_mask값은 패딩 토큰인지 실제 토큰인지를 나타내는 값이다.decode를 통해서 토큰단위로 나눈 문장을 다시 합칠수 있고, CLS, SEP는 문장의 시작과 끝을 나타내는 특수 토큰이다.첫번째 처럼 두 문장을 각각 list에 넣을수도 있고, 두 문장을 합쳐서 하나로 토크나이징 할 수도 있다.
2024.11.20
좋아요
별로에요
패스키: 인증 기술의 미래, 비밀번호 없는 세상으로의 발걸음
안녕하세요, 오늘은 비밀번호 없는 세상을 위한 기술인 패스키에 대해 소개를 하려고 합니다.왜 비밀번호가 없어져야만 하는지, 이를 위해 등장한 기술인 패스키가 무엇인지, 그리고 SK텔레콤에서는 어떤 노력을 기울이고 있는지 전달드리도록 하겠습니다.비밀번호로 부터 발생하는 문제들우리는 아주 오래전부터 온라인 서비스를 이용할 때 비밀번호를 생성하고 입력하여 로그인, 인증을 해왔습니다.지금 이 글을 작성하는 저도, DEVOCEAN에 비밀번호 입력을 통해 로그인을 하였습니다.얼핏 생각해보면 비밀번호는 우리 곁에 오랫동안 함께 해왔고, 비밀번호에 대해 특별히 고민을 해본적이 없습니다.하지만 기술의 발전과 환경의 변화에 따라 비밀번호에 대한 고민은 깊어지고 있습니다.그럼 비밀번호로 발생하는 여러가지 문제, 제약 사항 등을 알아보도록 하겠습니다.• None 비밀번호는 말 그대로 나만 알고 있어야 하는 비밀값입니다. 하지만, 구조적으로 비밀번호를 이용하여 온라인 서비스에 인증을 할 때는, 비밀번호가 네트워크를 통해 전달되며, 온라인 서비스에 저장된 값과 비교하여 해당 로그인, 인증을 수행하려는 대상이 맞는지 확인을 합니다 (대칭성). 네트워크로 전달되는 정보는 환경에 따라 해당 값이 노출될 수 있으며, 온라인 서비스에 저장된 비밀번호 검증 값은 때로는 해커들의 좋은 먹이감이 되고 있습니다. 일방향 함수, 솔팅 (Salting) 등 비밀번호 등을 안전하게 저장하기 위한 방법들이 존재하나 컴퓨팅 파워의 발전에 따라 이러한 방법들도 점차 무력화되고 있는 상황입니다.• None 비밀번호는 추측 가능한 형태가되어서는 안되며, 되도록이면 무작위로 선택된 값이어야 합니다. 인간의 뇌는 기본적으로 패턴을 기반으로 동작하며, 인간은 무작위로 어떤 값을 선택하는데 능숙하지 않으며, 하물며 특정 길이 이상의 무작위 값을 생성하는 것은 더욱 능숙하지 않습니다. 이때문에, 우리는 비밀번호를 생성할 때 특정 규칙에 따라 생성을 하게 됩니다. 특정 규칙에 따라 생성된 비밀번호는 소셜엔지니어링 또는 비밀번호 크래킹 툴을 통해 손쉽게 알아낼 수 있습니다. (규칙성)• None 온라인 서비스 이용 시 앞서 설명 드린 것과 같이 우리는 임의의 비밀번호 생성을 어려워 합니다. 이로 인해, 인터넷 상의 많은 사용자들은 새로운 온라인 서비스 이용 시 기존에 다른 서비스에서 이용한 비밀번호를 그대로 사용합니다. 만약, 그러한 서비스 중 하나에서 비밀번호 유출 사고가 발생될 경우, 동일한 아이디 및 비밀번호를 사용하는 다른 서비스도 손쉽게 계정 탈취가 발생할 수 있습니다. 최근 들어, 이러한 유형의 보안 사고가 크게 증가하고 있으며, 외부에서 획득한 계정 정보로 타 서비스에 입력함으로써 계정을 탈취하고 있습니다. 이러한 공격 방식을 Credential Stuffing 이라고 부르며, 매우 낮은 비용으로 효과적인 공격을 수행할 수 있습니다. (재사용성)• None 생성형 AI의 발전에 따라, 고도화된 사이버 공격 등이 증가하고 있으며, 최근들어 피싱 (Phishing) 형태의 공격이 증가하고 있습니
11/20/2024
패스키: 인증 기술의 미래, 비밀번호 없는 세상으로의 발걸음
안녕하세요, 오늘은 비밀번호 없는 세상을 위한 기술인 패스키에 대해 소개를 하려고 합니다.왜 비밀번호가 없어져야만 하는지, 이를 위해 등장한 기술인 패스키가 무엇인지, 그리고 SK텔레콤에서는 어떤 노력을 기울이고 있는지 전달드리도록 하겠습니다.비밀번호로 부터 발생하는 문제들우리는 아주 오래전부터 온라인 서비스를 이용할 때 비밀번호를 생성하고 입력하여 로그인, 인증을 해왔습니다.지금 이 글을 작성하는 저도, DEVOCEAN에 비밀번호 입력을 통해 로그인을 하였습니다.얼핏 생각해보면 비밀번호는 우리 곁에 오랫동안 함께 해왔고, 비밀번호에 대해 특별히 고민을 해본적이 없습니다.하지만 기술의 발전과 환경의 변화에 따라 비밀번호에 대한 고민은 깊어지고 있습니다.그럼 비밀번호로 발생하는 여러가지 문제, 제약 사항 등을 알아보도록 하겠습니다.• None 비밀번호는 말 그대로 나만 알고 있어야 하는 비밀값입니다. 하지만, 구조적으로 비밀번호를 이용하여 온라인 서비스에 인증을 할 때는, 비밀번호가 네트워크를 통해 전달되며, 온라인 서비스에 저장된 값과 비교하여 해당 로그인, 인증을 수행하려는 대상이 맞는지 확인을 합니다 (대칭성). 네트워크로 전달되는 정보는 환경에 따라 해당 값이 노출될 수 있으며, 온라인 서비스에 저장된 비밀번호 검증 값은 때로는 해커들의 좋은 먹이감이 되고 있습니다. 일방향 함수, 솔팅 (Salting) 등 비밀번호 등을 안전하게 저장하기 위한 방법들이 존재하나 컴퓨팅 파워의 발전에 따라 이러한 방법들도 점차 무력화되고 있는 상황입니다.• None 비밀번호는 추측 가능한 형태가되어서는 안되며, 되도록이면 무작위로 선택된 값이어야 합니다. 인간의 뇌는 기본적으로 패턴을 기반으로 동작하며, 인간은 무작위로 어떤 값을 선택하는데 능숙하지 않으며, 하물며 특정 길이 이상의 무작위 값을 생성하는 것은 더욱 능숙하지 않습니다. 이때문에, 우리는 비밀번호를 생성할 때 특정 규칙에 따라 생성을 하게 됩니다. 특정 규칙에 따라 생성된 비밀번호는 소셜엔지니어링 또는 비밀번호 크래킹 툴을 통해 손쉽게 알아낼 수 있습니다. (규칙성)• None 온라인 서비스 이용 시 앞서 설명 드린 것과 같이 우리는 임의의 비밀번호 생성을 어려워 합니다. 이로 인해, 인터넷 상의 많은 사용자들은 새로운 온라인 서비스 이용 시 기존에 다른 서비스에서 이용한 비밀번호를 그대로 사용합니다. 만약, 그러한 서비스 중 하나에서 비밀번호 유출 사고가 발생될 경우, 동일한 아이디 및 비밀번호를 사용하는 다른 서비스도 손쉽게 계정 탈취가 발생할 수 있습니다. 최근 들어, 이러한 유형의 보안 사고가 크게 증가하고 있으며, 외부에서 획득한 계정 정보로 타 서비스에 입력함으로써 계정을 탈취하고 있습니다. 이러한 공격 방식을 Credential Stuffing 이라고 부르며, 매우 낮은 비용으로 효과적인 공격을 수행할 수 있습니다. (재사용성)• None 생성형 AI의 발전에 따라, 고도화된 사이버 공격 등이 증가하고 있으며, 최근들어 피싱 (Phishing) 형태의 공격이 증가하고 있습니
2024.11.20
좋아요
별로에요