HTTP 200 OK

Memento mori & Carpe diem

전체 글 65

글또 10기 회고(마지막 글)

필자는 글또 9, 10기에 참여했고 정말 귀중한 시간들과 글또 분들에게 선한 영향력을 받으며 많은 자극을 받아 더욱 성장할 수 있었습니다. 아쉽게도 공식적인 글또의 여정은 10기에서 마무리되지만, 마지막이라고 실감나지는 않고 글또 분들과 지속적으로 소통을 이어나가려고 노력해볼 예정입니다. 글또를 처음 시작한 9기부터 새롭게 성장하는 계기가 된 것 같습니다. 정말 많은 일들에 새롭게 도전하고 실패도 많이 했습니다. 아마 지금의 개발자로서 저를 만든것에 일조한 것이 글또를 시작한 일이라고 말할 수 있을 것 같습니다. 정말 아쉽게 느껴지기도 하고 시간이 이렇게 빠르게 흘러갔나?.. 싶기도 합니다. 글또분들은 다들 따뜻하고 좋으신 분들이니 어디서든 마주한다면 반갑게 인사를 나누었으면 좋겠습니다ㅠ 글또와 함께한 ..

활동 2025.03.30

개발자의 시선에서 노션 살펴보기

노션은 단순한 메모 앱을 넘어 문서 편집, 데이터베이스 관리, 프로젝트 협업까지 가능한 올인원 협업툴이라고 생각합니다. 많은 사용자가 노션을 선호하는 이유는 직관적인 UI와 다양한 기능이라고 생각합니다. 필자도 노션을 애용하고 있었기에 문득 어떤 기능들이 어떻게 구현되었을까? 하는 궁금증이 생겼습니다. 이번 글에서는 백엔드 개발자의 시각에서 노션의 주요 기능들이 어떻게 동작하는지, 그리고 노션이 다른 메모 서비스와 비교하여 어떤 기술적 차별점을 가지는지 추측 겸 분석해보겠습니다. 2. 노션의 주요 기능 분석2.1 블록 기반 데이터 모델노션의 가장 큰 특징 중 하나는 블록 기반 데이터 모델이라는 것입니다. 일반적인 문서 편집기는 연속된 텍스트를 하나의 문서로 저장하지만, 노션은 모든 콘텐츠(텍스트, 이미지..

기타 2025.03.16

데이터베이스 성능 최적화 고찰

대규모 서비스를 운영하다 보면 데이터 저장 방식, 쿼리 최적화, 트랜잭션 관리, 대용량 데이터 처리가 서비스 성능에 직접적인 영향을 미치기도 합니다. 잘못된 데이터 모델링, 비효율적인 쿼리, 인덱스 활용 부족 등이 문제를 일으킬 수 있습니다. 이 글에서는 PostgreSQL과 MySQL을 기반으로 쿼리 최적화, 대용량 데이터 처리, 트랜잭션 설계를 위한 전략을 정리해 봤습니다. 1. 성능 최적화 전 선행 작업 백엔드 개발자로서 성능 개선을 고민할 때, 단순히 "이 쿼리를 최적화하자" 수준이 아니라 서비스의 데이터 처리 패턴을 먼저 이해해야 한다. 1.1 데이터 액세스 패턴 분석"우리 서비스는 읽기(조회) 비중이 높은가? 쓰기(저장) 비중이 높은가?"읽기 중심 서비스 (예: 뉴스 피드, 검색 엔진) → 캐..

DB 2025.03.02

토스 러너스하이 서버 1기 백엔드 과정 후기

토스 러너스 하이란?토스 러너스 하이는 개발 실무 경력이 있는 서버 개발자를 위한 프로그램입니다. 2024년 12월 16일부터 2025년 1월 16일까지 약 한 달간 진행된 교육에 참여할 수 있었습니다. 아 참고로 이번이 처음으로 시행하는 서버 1기였습니다 ㅎㅎ 2025년부터는 추가 기수를 모집할 예정이라고 하니, 1기 모집과정이 궁금하신 분들은 모집요강 을 확인해 보시면 좋을 것 같습니다.  러너스하이해또 모집!!저는 글또 커뮤니티에서 활동하고 있는데, 우연찮게도~? 글또의 백엔드 개발자분들 중에서도 토스 러너스 하이에 참여하시는 분들이 계셨습니다. 글또에서는 총 23분이 참여하신걸 확인했습니다. 저는 바로 노션 팀 페이지를 만들고 함께 달릴분들을 모집했고 결과적으로는 9분과 함께 서로의 작업물을 공유..

활동 2025.02.10

DLQ 적용기

Dead Letter Queue (DLQ)란 무엇인가?DLQ는 정상적으로 처리되지 못한 메시지들을 저장하는 특별한 큐입니다.(카프카에서는 단순한 토픽입니다) DLQ의 본질은 특정 횟수 이상의 재시도 후에도 메시지 처리가 실패하거나 복구할 수 없는 오류가 발생했을 때 해당 메시지를 DLQ로 이동시켜 시스템이 계속 정상적으로 작동하면서 메시지를 손실하지 않고, 추후에 메시지를 검토하거나 재처리할 수 있도록 보장하는 방법입니다. DLQ가 필요한 이유 기존에는 isPublish라는 컬럼을 이벤트 소싱 패턴에 적용시켜놔서 이벤트 발송 실패시 시스템 내부적으로 처리하고 있었습니다. 처리량과 실패율이 낮아 별도의 DLQ가 필요없어보였지만 솔루션 연동과 고객사들이 증가함에 따라 미리 예방하는 차원에서 현재 시점에서 미..

Spring 2025.01.18

[2024] Google Cloud Study Jam 후기

안녕하세요, 백엔드 개발자로서 Google Cloud Study Jam 2024의 AI & ML 과정을 모두 수료한 경험을 공유하고자 합니다. 한달 가량 시간을 소요해 과정을 수료할 수 있었습니다. Beginner부터 Advanced까지의 여정을 통해 얻은 인사이트와 후기를 작성해봤습니다. 1. 학습 과정 개요 Beginner 과정처음 AI/ML을 접하는 백엔드 개발자로서 기초적인 머신러닝 개념부터 차근차근 학습했습니다. Generative AI의 개념과 전통적인 머신러닝과의 차이점을 학습하고 Google Cloud의 핵심 서비스들을 살펴볼 수 있었습니다,특히 다음과 같은 부분들이 인상적이었습니다.BigQuery와 같은 데이터 분석 도구의 강력함AI Platform의 기본적인 사용법머신러닝의 기초 개념들..

활동 2025.01.05

잘하는 개발자란?

토스 러너스 하이를 지원하며 받은 질문 중 잘하는 개발자란?'에 대해 깊이 고민해 보았다. '잘하는 개발자란?' 너무나도 흥미로운 질문에 필자의 생각을 정리해 봤다. 우선 '잘하다'라는 뜻은 무엇일까? 사전적 의미를 살펴보자.옳고 바르게, 또는 좋고 훌륭하게 하다.익숙하고 능란하게 하다.평탄하고 만족하게 하다.버릇으로 자주 하다. 이렇듯 '잘하다'의 뜻은 상황, 문제, 또는 일에 대한 통찰력과 분별력을 바탕으로 최선의 결과를 만들어내는 행위를 뜻한다. 이런 행위를 특정 분야에서 오랜 시간에 걸쳐 익히고 능숙해진 것은 전문성을 가졌다고 볼 수 있으며 이런 전문성을 가진 사람을 전문가라고 부른다. 그렇다면 '잘하는 개발자'란 무엇인가? 단순히 맡은 일을 원활히 수행하고 가치 있는 결과물을 창출하는 사람일까?..

기타 2024.12.19

[2024] Google Cloud Study Jam 신청

구글 클라우드에서 교육을 하고 있는 것을 처음 알게된 것은 geekNews이었다. 정보를 찾아보다 구글 클라우드 교육이 있기에 재밌어보여 신청하게 됐다.(나만 빼고 이런 재밌는걸?..)  필자는 머신러닝을 한번쯤은 공부해보고 싶었기 때문에 정말 좋은 기회라고 생각했다. 처음에는 AI란 무엇인가에 대한 간단한 개념을 알려줬다. 생성형 AI, 머신러닝, 딥러닝, 프롬포트, LLM 전부 익숙한 단어들이지만 해당 개념들의 동작원리에 대해서는 탐구해본적이 없었기에 재밌었다. 해당 과정은 온라인 강의 시청과 직접 수행하는 과제로 이루어져 있는 것 같았다. 아래의 과정을 전부 듣고 수료를 하게 되면 다음과 같은 상품을 주는데 가방이 너무 멋있어서 신청하게 된 것도 있다..  총 25개의 학습자료가 있으며, 완료시간은..

활동 2024.12.19

JSON 직렬화가 왜 안돼?..

개요A서버에서 B서버로 body를 전달해주는 테스트를 하던 도중 필드 하나가 미전달 되는 현상이 지속적으로 발생했습니다. 해당 이슈를 해결하기 위해 다방면으로 고민했던 과정과 해결방안을 작성했습니다. 해결과정dto는 아래와 구성했고 해당 객체를 body에 담아 전달해주는 로직을 작성하고 있었습니다. 여느때와 다름없는 작업이었지만 isDelete 필드만 전달 되지 않는 현상이 발생하고 있었습니다. 간단한 문제라고 생각했기에 큰 문제가 아니라고 생각했지만 고난의 시작이었습니다ㅠ..data class jacksonTest( val id : String, val name : String, val isDelete : String, val createdAt : LocalDateTime) 이렇게..

Kotlin 2024.11.24

undertow VS tomcat 비동기 처리(Feat.이벤트루프란?)

Undertow와 Tomcat의 비동기 처리Undertow와 Tomcat은 자바 기반 웹 서버인건 동일하지만 비동기 I/O 처리하는 방식은 다릅니다. 이 둘에 대한 차이점과 어떠한 원리로 동작 하는지 살펴보겠습니다. 설명을 드리기에 앞서 undertow에서 비동기 프로그래밍을 처리할때 중요한 개념인 이벤트 루프에 대해 소개하겠습니다.  이벤트 루프(Event Loop)란?이벤트 루프는 비동기 프로그래밍 모델에서 중요한 역할을 하는 개념으로 싱글 스레드 환경에서 비동기 처리를 지원하기 위해 사용됩니다. 이벤트를 큐에 넣고 큐에 있는 이벤트를 하나씩 처리하는 방식(콜스택&큐)으로 동작합니다. 이러한 이벤트 루프의 순환 과정을 통해 실시간으로 이벤트를 처리하며 동시성을 관리하고 효율적으로 자원을 사용할 수 있..

Spring 2024.11.09