PostgreSQL Connection Modes: Session vs Transaction Mode Explained

What are PostgreSQL Connection Modes? PostgreSQL offers two primary connection modes through connection poolers like PgBouncer: Session Mode (also known as Connection Mode) and Transaction Mode. Each mode serves different use cases and comes with its own set of advantages and trade-offs. Session Mode (Connection Mode) Explained Provides a dedicated database connection for each client throughout their entire session Only releases the connection when the client explicitly disconnects Maintains full compatibility with all PostgreSQL features and session-level commands Offers better reliability and compatibility with all PostgreSQL clients Consumes more database resources due to long-lived connections[2] Transaction Mode Deep Dive Maintains database connections only during active transactions Automatically returns connections to the pool after transaction completion Supports up to 10,000 client connections with minimal pool size Optimizes resource usage by efficiently managing idle connections Particularly effective for applications with numerous low-activity connections[2][3] Key Differences Between Session and Transaction Modes Connection Lifecycle: ...

October 21, 2024 2 min

Golang Project Guide from A to Z: From Feature Development to Enterprise Application Design

Summary “고언어 프로젝트 가이드 A-Z"라는 주제로, 작은 프로젝트부터 엔터프라이즈 애플리케이션까지 Go 언어를 사용한 개발 방법론에 대해서 공유해보았습니다. 작은 프로젝트와 큰 프로젝트의 차이점을 설명하고, 작은 프로젝트에 적합한 간단한 코드 패턴을 소개하고, 기능 단위의 프로젝트를 위한 코드 패턴으로 Handler와 HandlerFunc 방식을 비교하고 각각의 장단점을 설명합니다. 엔터프라이즈 애플리케이션을 위한 코드 패턴으로 Domain Driven Design (DDD) 접근 방식을 소개하고, 각 레이어(Presenter, Handler, Usecase, Service, Repository, Recorder)의 역할과 장점을 설명합니다. NoSQL 데이터베이스 (DynamoDB) 사용 시의 모델링 방법을 간략히 소개합니다. 그리고 각 레이어에서의 테스트 코드 작성 방법과 모킹 도구인 counterfeiter의 사용법을 설명합니다. 애플리케이션 릴리즈를 위해 필요한 도구들(APM, 에러 모니터링, 메트릭 수집, 로그 서비스)을 소개하고 그 중요성을 강조합니다. ...

October 14, 2024 4 min

Go 도입 후 4년 간 기록

Summary Gophercon Korea 2023에서 발표한 “Go 도입 후, 4년 간의 기록"이라는 주제로 공유했습니다. Go를 도입하여 높은 트래픽을 처리하고 있으며, 주요 이슈와 해결 방법을 공유하고, Go를 통해 더 효율적이고 안정적인 서비스를 제공하기 위한 고민들을 공유합니다. Youtube Slideshare Go 도입 후 4년 간 기록 from Kyuhyun Byun

July 25, 2024 1 min

스타트업 팀이 지속적으로 움직이기 위한 리더십 간단 버전

의사결정과 업무 진행은 프로덕트를 사용하는 고객관점에서 시작한다. 고객관점이라는 말은 많이 하지만 실제로 이게 왜 사용되어야 하는지 두 가지 방면에서 설명한다. 1. 조직에서의 의사결정 측면 이런 상황은 자주 발생했을 것이라 생각한다. 서로의 팀원(혹은 조직)의 생각이 달라서 벌어진 상황이다. 각 팀원은 수단에 대해서 집착을 하게 되고 이야기가 평행선을 달리게 된다. 이때 어떻게 이야기를 하면 문제를 해결할 수 있을까? 고객이 겪는 문제 상황에 대해서 먼저 정확히 이해하는 게 필요하다. 혹은 고객에게 꼭 필요하다고 생각하는 것에 대한 정의가 필요하다. 이를 문서 최상위에 “목표”로 정의를 한다. ...

June 3, 2024 8 min

Managing and Overcoming Burnout (feat. Mannerism, Slump)

The word “burnout” is being heard from all directions. It is being expressed as a reason for quitting, changing jobs, taking vacations, and as a way to express difficulties in life. I think everyone has heard it at least once, and I believe there have been times when you’ve wondered if you are experiencing burnout. When I hear people talking about burnout, I often feel a deep sense of sympathy, but I also feel that there is little I can do to help. I can suggest various things to try, but those who are experiencing burnout often don’t seem to hear those suggestions. So, while contemplating what to do, I decided to write this. ...

February 18, 2024 6 min

번아웃을 통제하고 이겨내는 방법(feat. 매너리즘, 슬럼프)

번아웃이라는 말이 사방에서 들리고 있다. 퇴사 사유로, 이직 사유로, 휴가 사유로, 인생에 대한 어려움을 표현하는 방법으로 표현되고 있다. 다들 한 번씩은 들어봤을 거라 생각한다. 그리고 내가 번아웃인 상태가 아닌지 생각해본 적이 있을 거라 생각한다. 옆에서 번아웃 이야기를 들을 때, 정말 안타까운 마음이 들면서도 크게 도와줄 방법이 없다고 느낀 적도 많다. 여러가지 시도해볼 수 있는 이야기를 하지만 번아웃에 빠진 사람은 이야기가 들리지 않는다. 어떻게 해야할까 고민을 하다가 이렇게 글을 써본다. “나는 번아웃이 온 적이 없다.” ...

February 18, 2024 4 min

A career journey for serverless and container cloud developers: 소프트웨어 엔지니어의 덕목

배경 AWS re:Invent 2023에서 “A career journey for serverless and container cloud developers” 라는 공통주제로 발표를 준비했다. 여기서 중요하게 다루고자 했던 것은 소프트웨어 엔지니어가 이전의 프로그래머 시대와 어떤 부분에서 노력할 지에 대한 방향이었다. “소프트웨어 엔지니어의 덕목” 이라는 주제로 시장이 변화해감에 따라 엔지니어의 다른 역량들을 더욱 필요로 한다는 점을 표현하고 싶었고, 이런 관점을 공유함으로써 다양한 엔지니어의 성장에 조금이나마 기여하려 하였다. 발표 자료 및 영상 References https://youtu.be/gdqgk17T2Xw?si=sPEVjrg7rIFmeI4S

November 29, 2023 1 min

성장하는 엔지니어가 되는 법: 주니어편

배경 아우쓱콘(https://festa.io/events/3504)에서 발표 요청이 왔고, 주니어 엔지니어에게 하고 싶은 이야기를 해달라고 하였다. 덕분에 지난 시간을 되돌아볼 수 있었고, 작게나마 이야기를 정리할 수 있었다. 무슨 이야기를 하면 도움이 될까 고민을 했다. 주니어 때 가졌던 고민을 무엇이었나. 이런 상황들이 있었다. 쏟아지는 상황에 지쳐있었다. 앞이 보이지 않는 상황에 지쳐있었다 새로운 지식을 미친듯이 공부하고 있었다. 찍먹하면서 다양한 지식을 습득하고 있었다. 무작정 해보고 잘 안된다고 생각하고 있었다. 이런 상황에서 다양한 선택들을 해보고 방법을 찾아보았다. 그중에서 배운 방법들이 있었고, 잘 동작한다고 느꼈다. 이를 공유하는 것을 목표로 삼고, 이를 본 많은 사람들 중 한 명이라도 도움이 되었으면 하면서 발표를 준비하였다. ...

June 7, 2023 2 min

스포츠를 통해 배운 프로처럼 일하는 방법

Background 최근 많이 했던 고민이 있다. 하고 싶은 대로 하는 게 정말 좋은 것인지, 아니면 해야 할 일을 하는 게 좋은 것인지 답을 내리지 못했다. 다만 이전까지의 생각은 있었다. “하고 싶은 대로 하는 게 좋은 것이야.” 그런데도 마음 한 켠에는 불안감이 있었다. 왜냐하면 하고 싶은 대로 했을 때 주변에서의 시선과 업무에서의 성과가 좋지 않은 경우가 여러 번 관찰되었다. 하고 싶은 대로 했을 때 모두가 임팩트가 있다고 느끼는 결과를 보기 어려웠다. 결과가 나왔을 때, 실제로 서비스에 긍정적인 영향을 주지 못했고, 장기적인 관점에서 서비스를 개선하거나, 고도화하는 데 어려움을 느꼈다. ...

December 13, 2022 3 min

2200만 사용자를 위한 채팅 시스템 아키텍처

채팅은 맨 처음 입사하고 나서 맡은 프로젝트였고, 지금까지도 운영하고 개선하는 서비스이다. 처음에 Ruby on rails 로 개발하던 환경에서 처음으로 시작한 마이크로서비스다. 시작할 때의 고민과 그리고 지금까지의 달려온 여정에서 어떠한 결정을 했는지 고민이 담긴 발표였다. 영상 References https://youtu.be/lCxgddyxDyg https://summits-korea.virtual.awsevents.com/media/01.%202200%EB%A7%8C%20%EC%82%AC%EC%9A%A9%EC%9E%90%EB%A5%BC%20%EC%9C%84%ED%95%9C%20%EC%B1%84%ED%8C%85%20%EC%8B%9C%EC%8A%A4%ED%85%9C%20%EC%95%84%ED%82%A4%ED%85%8D%EC%B2%98/1_ybuscua9 2200만_사용자를_위한_채팅_시스템_아키텍처.pdf https://byline.network/2022/05/0512-2/

May 12, 2022 1 min