Wafris는 웹 애플리케이션 방화벽을 오픈소스로 제공하고 있습니다. 저희는 다양한 프레임워크를 지원하는데, 그중에서도 Rails 미들웨어 클라이언트를 제공하고 있죠. 처음 v1 클라이언트를 출시했을 때는 여러분의 앱과 함께 로컬 Redis 데이터스토어를 배포해야 했습니다. 하지만 이제 v2 Rails 클라이언트를 출시하면서 SQLite를 백엔드 데이터스토어로 사용하게 되었습니다. 이 글에서는 Redis에서 SQLite로 마이그레이션하기로 결정한 이유, 성능에 대한 고려 사항, 그리고 아키텍처의 변화에 대해 다룰 예정입니다.
피그마(Figma)는 지난 6월 Config 2024에서 AI 기능 업데이트를 발표했습니다. 디자인 생성부터 이미지 처리, 텍스트 수정까지 자동화하여, 디자인 프로세스를 간소화할 다양한 기능을 소개했는데요. 아쉽게도 그중 ‘메이크 디자인(Make Design)’ 서비스를 7월 초 일시 중단했습니다. 그리고 피그마는 최근 ‘메이크 디자인(Make Design)’ 기능을 ‘First Draft’라는 이름으로 다시 공개했습니다. 그러나 피그마가 해당 기능을 재정비하는 사이, 텍스트로 화면을 설계할 수 있는 서비스가 여럿 주목받았는데요. 오늘은 최근 베타 서비스를 시작한 ‘Polymet’을 살펴보고자 합니다.
실제 서비스를 위한 AI를 만들 때 필요한 것들을 마저 살펴볼까요? 학습 데이터셋 정의와 구축을 마치고 나면 정해야 하는 것은 테스트 방법입니다. 이 방법 역시 서비스 요구 사항으로부터 도출해야 합니다. 즉, “어떻게 이 AI 모델을 평가할 것인가”에 대한 정보를 알아내는 일이죠. 서비스 요구 사항의 쓰임은 여기서 끝이 아닙니다. 또 하나 필요한 작업이 있습니다. 바로 모델에 관련된 요구 사항을 도출하는 일입니다. 이처럼 단순히 AI 모델의 성능을 올리는 작업 외에도 정말 많은 일들이 있습니다. 모델 개발에 어떤 과정들이 필요하다, 이것만 알고 있어도 실무에서 AI 모델을 개발할 때 정말 큰 도움이 될 거라고 믿어 의심치 않습니다.
트랜잭셔널 메시징이란 “메시지를 데이터베이스 트랜잭션의 일부로 발행하는 것”을 의미한다. 애플리케이션 비즈니스 로직에 의해 데이터베이스를 수정하는 작업과 메시지 큐에 메시지를 발행하는 작업, 두 가지 작업을 원자적으로 수행하여 데이터 일관성을 보장하는 것이다. 이 글에서는 트랜잭셔널 메시징을 구현하는 두 가지 패턴을 소개한다. 이어 포스트그레스큐엘(PostgreSQL)을 이용하여 이를 더 단순하게 만드는 방법을 다룬다. 포스트그레스큐엘과 PGMQ를 함께 사용하면 데이터베이스 단일 트랜잭션으로 두 가지 작업을 묶을 수 있다.
최근 한 개발자 커뮤니티 대나무숲에서 자기소개에 대한 고민 글을 보게 되었습니다. “내일 면접인데 혹시 자기소개는 보통 어떤 식으로 하나요? 무슨 말로 자기소개를 해야 할지, 어느 정도 문장으로 구성해야 할지 고민이네요.” 이 글을 보고 나서 예전에 면접 볼 때 자기소개를 어떻게 했었는지 다시 한번 떠올려봤습니다. 사실 마지막으로 면접을 본 게 거의 3년 전이다 보니, 만약 지금 당장 면접을 본다면 저를 어떻게 소개해야 할지 생각하게 됐습니다. 일반적으로 면접의 시작은 1분 자기소개와 함께하니까요. 1분이라는 시간이 누군가에게는 짧게, 또 누군가에게는 길게 느껴질 수도 있는데요. 이 시간에 나의 장점을 잘 어필하기 위해서는 구조를 다듬고 표현을 정제하는 과정이 필요하며, 철저히 준비해야 실수를 줄일 수 있습니다. 오늘은 이 질문에 대한 답변을 바탕으로 이야기해 보려고 합니다.
GraphQL은 클라이언트가 필요한 특정 데이터만 요청할 수 있도록 하여 보다 효율적이고 유연한 데이터 검색을 가능하게 하는 API 쿼리 언어입니다. 언어의 발전과 함께 점점 더 많은 기업에서 클라이언트-서버 통신 수단으로 GraphQL을 채택하는 사례가 늘어나고 있습니다. 대표적으로 페이스북(Facebook), 깃허브(GitHub), 그리고 핀터레스트(Pinterest) 같은 서비스들이 GraphQL을 채택하고 있다고 합니다. 대형 서비스들뿐만이 아닙니다. 글을 쓰는 현재 기준(24년 10월), 깃허브에서 “GraphQL”이란 키워드를 포함한 공개 레포지토리가 29,865개에 달할 정도죠. 이번 글에서는 이 쿼리 언어의 특징을 살펴보며, 왜 이토록 많은 관심을 받는지 알아보려고 합니다.
생성형 AI와 툴 서비스는 사용자가 작업 목표를 쉽고 편리하게 달성할 수 있도록 돕는 공통적인 가치를 제공합니다. 현재 많은 툴 서비스에서 AI 기능을 붙여, 사용자가 더 쉽게 작업을 완료할 수 있게 해 서비스 진입장벽을 낮추고 있습니다. 특히 AI를 활용해 다양한 초안을 생성하거나, 작업에 대한 피드백을 제공함으로써 더욱 고도화된 결과물을 만들 수 있죠. 이번 글에서는 디자인 툴과 웹/앱 제작 분야의 툴 서비스가 제공하는 무료 AI 기능이 어떤 사용자 경험을 제공하는지 살펴보겠습니다.
저는 다국적 IT 회사에서 10년 가까이 일하면서 다양한 나라의 개발자와 엔지니어를 만났습니다. 오랜 기간 그들과 협업하는 과정에서 개발자의 영어 구사 능력에 자연스레 관심을 가지게 되었습니다. 한편 그 회사에서 일하는 한국인 개발자들과 함께 할 기회도 많았습니다. 그들이 다른 나라 개발자에 비해 뒤지지 않는 뛰어난 개발 실력을 갖추고도, 오로지 영어 때문에 능력을 온전히 평가받지 못하는 모습 역시 보고는 했습니다. 이번 글에서는 개발자가 영어 공부를 해야 하는 이유를 사실과 데이터에 근거해 살펴보고자 합니다. 글의 마지막에는 제 개인적인 견해를 바탕으로 ‘개발자에게 영어가 중요한 또 다른 이유’를 덧붙이고자 합니다.
소프트웨어 산업에는 하루에도 수십 개의 새로운 약어와 개념이 등장합니다. 특히나 빠르게 변하는 AI 기술 같은 경우라면 더욱 말입니다. AI를 제대로 맛보게 해 준 챗GPT와 같은 LLM이 우후죽순으로 등장하더니, 지금은 또 메타의 라마로 대표되는 SLM 혹은 sLLM이라는 게 나오고, AI를 완성시키는 AGI라는 개념도 이해해야 하는데, 또 검색-증강 생성이라며 RAG라는 말이 심심치 않게 들립니다. 배경 개념을 알고 거기에 쉬운 스토리를 붙이면 이해에 어렵지 않습니다. 최소한 이 글을 끝까지 읽으신다면 RAG에 대한 이해는 제가 책임지겠습니다. 자, 시작합니다.
한창 MSA(Microservices Architecture)로의 전환을 진행하는 중이었던 저희 팀은 새로운 branch 전략이 필요한 상황이었습니다. MSA로 전환하면서 기존 정기 배포 방식은 버리고 수시 배포를 하기로 결정했기 때문이었죠. Git-flow, Github-flow, Gitlab-flow를 포함해 여러 branch 전략을 살펴보았지만, 팀 환경에 꼭 맞는 branch 전략은 없었습니다. 그래서 팀의 요구 사항과 환경에 맞는 branch 전략을 직접 만들기로 결정했습니다.
삼성전자에서 십몇 년 전 PRD를 처음 접한 이후로 어디를 가나 저는 PRD를 작성해야 한다고 주장하는 사람이었습니다. 반대로 어느 곳에서도 ‘제대로’ PRD를 쓰는 조직을 만나지는 못했습니다. 그런 조직에서 일하는 방식, 제품을 만드는 과정은 대체로 비슷합니다. 스크린 플로우를 그리고, 여기에서 출발해 피그마나 스케치로 프론트 제작을 먼저 하고 있었습니다. PRD에 대해서는 ‘그런 건 느리다’ 라거나 ‘이렇게 하는 게 더 빠르고 잘한다’는 입장이 많았고, ‘PRD 같은 건 삼성전자 정도 되는 조직에서나 쓰는 거’라는 반응도 있었습니다. 그런 이들을 위해 오늘은 PRD를 작성하는 목적은 무엇이고, 누가 써야 하는가에 대해 얘기해 보겠습니다.