본문 바로가기

전체 글

(98)
루티 팀의 무중단 배포 도전기 안녕하세요, 우아한테크코스 7기 루티 팀의 백엔드 개발자 머랭입니다.저희 팀은 무중단 배포를 도입하기로 결정했는데요.무중단 배포를 도입하며 습득한 지식과 루티 팀의 의사결정 과정, 어떤 방식으로 무중단 배포를 구현했는지 공유해드리고자 합니다.무중단 배포에 대해 개념적으로만 알고 계신 분들, 단일 EC2에서 무중단 배포를 구현하고 싶은 분들에게 도움이 될 것 같습니다.본격적인 시작에 앞서, 무중단 배포가 무엇인지 알아보도록 하겠습니다. 무중단 배포란?배포 시, 서버 다운타임(Downtime)을 극도록 낮추는 것을 지향하는 배포 방식입니다.빅뱅 배포 방식의 문제점을 해결하기 위해 등장했습니다. 빅뱅 배포: 배포 시에 기존 애플리케이션을 종료하고 새로운 버전의 애플리케이션을 실행시키는 방식입니다. 새로운 ..
락 없이 데이터를 읽자! - MVCC in MySQL(InnoDB) 해당 글은 MySQL에서 InnoDB 엔진을 사용했을 때의 동작 원리를 기준으로 작성되었습니다.InnoDB가 아닌 다른 스토리지 엔진(ex. MyISAM)에선 존재하지 않는 개념일 수 있습니다. 안녕하세요 머랭입니다. 오늘은 데이터베이스의 핵심 기능 중 하나인 MVCC(다중 버전 동시성 제어), 그리고 MVCC 구현의 중심에 있는 Read View에 대해 알아보겠습니다. 백엔드 개발자라면 "DB 트랜잭션"이라는 말을 지겹게 들었을 겁니다.여러 사용자가 동시에 데이터를 읽고 쓸 때, 데이터의 일관성을 지키는 것은 정말 중요한데요.일관성을 지키기 위해 사용할 수 있는 가장 단순한 방법은 락(Lock)입니다. 일관성을 지키기 위한 간단한 방법 - 베타 락과 공유 락 트랜잭션 A가 R1(레코드)에 대해 읽기..
좋은 개발자란 뭘까? 완벽한 설계라는 무지개 나는 우아한테크코스에서 공부하며 객체지향에 깊이 빠져있었다. 깔끔하게 모듈화되고, 책임이 명확하며, 재사용성이 높은 코드를 볼 때마다 예술 작품을 보는 듯한 희열을 느꼈다. 레벨 1, 2를 거치며 나만의 확고한 기준이 생겼다. 가장 완벽한 코드와 완벽한 설계를 적용하는 것은 아름다운 일이다.모든 것은 추상화되어야 하며, 확장에 열려 있는 것이 옳다. 나는 코드와 설계에는 정답이 있을 것이라는 강한 믿음을 가지고 있었다. 이 믿음은 나를 잡을 수 없는 무지개를 향해 달려나가게 만들었다. 어느 새, 더 클린하고 더 완벽하며, 더 아름다운 아키텍처를 찾아 헤매는 사람이 되어었다. 하지만, 프로젝트를 하면서 이 믿음은 깨지기 시작했다. 완벽한 객체지향 설계와 아키텍처는 현실 세계에 ..
우아한테크코스 7기 레벨 3 회고 너무나도 바빴던 레벨 3가 끝났다.6기 선배들이 "오늘이 가장 한가한 날이다"라고 말했던 이유를 체감했던 레벨이었다. 명언이다. 좋은 팀 만들기프로젝트 초반, 우리 팀은 8인 페어 회의를 했다. ※ 충격 주의!: 8인 페어 회의란, 여덟 명이 전부 의견이 맞아야 다음 안건으로 넘어가는 회의 방식을 말한다. 다들 프로젝트에 진심을 다했고, 열정이 넘쳤다. 그러다 보니 자연스럽게 각자의 의견을 내세우고, 어떻게든 다른 팀원을 설득하려 했다. 나 또한 마찬가지였다. 시간이 흐를수록 무언가 잘못되었다는 것이 느껴졌다. 결국 데모데이 3일 전에야 겨우 기획을 마쳤고, 남은 3일 동안 밤샘 개발을 해야만 했다. 프론트엔드 팀원들은 24시간 카페에 모여 개발하다가 찜질방에서 쪽잠을 자고 출근할 정도였다. 반복..
내 프로젝트에 Docker가 정말 필요했을까? 서론 요즘의 개발 환경에서 Docker는 매우 자연스러운 도구로 자리 잡았다. 몇 가지 명령어만으로 컨테이너가 생성되고, 동일한 환경이 유지되며, 배포 과정도 단순화된다. 이러한 편의성으로 인해 Docker의 본질을 잊거나 무시하고 무작정 사용하는 경우가 많다. 그러나 프로젝트 규모와 특성을 고려하지 않고 Docker를 도입하는 것은 불필요한 복잡성을 야기할 수 있다. 특히 단일 서버에서 단일 Java 애플리케이션(Spring 등)만 운영하는 경우, Docker의 도입 필요성을 재검토할 필요가 있다. Docker의 장점을 하나하나 반박하고 수용하며 내 프로젝트에 Docker 도입이 적절한지 판단하는 시간을 가져 보자. 일반적인 소규모 프로젝트를 가정한다.1. 단일 EC2 (aws를 사용한다고..