▲GN⁺ 2024-08-11 | parent | ★ favorite | on: 데이터베이스 없이 고가용성 웹 서비스 구축(blog.screenshotbot.io)Hacker News 의견 SQLite를 사용하지 않고 자체 트랜잭션 로그를 만드는 것은 이상함 데이터가 한 서버에 맞으면 그냥 그 서버에서 데이터베이스를 실행하는 것이 좋음 데이터가 RAM에 맞으면 ramdisk를 사용하고 표준 도구로 영구 저장소에 복제하는 것이 간단함 MySQL, Postgres, Redis, MongoDB 등을 사용하지 않고 자체 메모리 내 데이터베이스를 만드는 것은 복잡함 트랜잭션을 직렬화하고 디스크에 기록해야 함 웹 서버 간의 트랜잭션 로그를 동기화하고 메모리 내 데이터베이스를 업데이트해야 함 충돌 해결 알고리즘을 작성해야 함 웹 서버를 테넌트별로 샤딩하고 로드 밸런싱 계층을 작성해야 함 MySQL이나 Postgres의 기본적인 측면을 배우지 않으려는 것은 시간 낭비임 공용 클라우드 제공자에서 실행할 때 기본 튜닝으로 동시성 문제를 해결할 수 있음 1천만 행을 추가하는 것은 큰 문제가 아님 더 나쁜 상황이 올 때까지 기다렸다가 해결하는 것이 더 현명함 HashiCorp의 Nomad, Consul, Vault와 유사한 아키텍처임 개발자 경험이 좋음 메모리 내 상태를 원하는 대로 설정할 수 있음 새로운 스타트업에는 적합하지 않음 업그레이드가 특히 어려움 RAM이 매우 저렴하다는 오해가 있음 SSD와 vCPU 성능은 크게 향상되었지만 RAM 가격은 크게 떨어지지 않음 DRAM 가격은 주기적으로 변동하며, 최근에야 약간 저렴해짐 파일 시스템 디렉토리를 테이블로, JSON 파일을 행으로 사용하는 프로젝트를 본 적이 있음 Redis, Mongo, Postgres를 고려했지만 자체 데이터베이스를 구축함 혁신적인 토큰을 데이터베이스 구축에 사용하는 것은 비효율적임 관계형 데이터베이스를 사용하는 것이 더 안정적임 내장된 중복성, 트랜잭션 로그, 백업, 복구 기능이 있음 대부분의 경우 데이터베이스를 사용하는 것이 좋음 복잡한 것을 피하기 위해 자체 Raft 합의 계층을 구현함 Redis를 사용하는 것이 더 간단할 수 있음 현대의 데스크탑 및 모바일 앱은 종종 SQLite와 같은 데이터베이스를 사용함 관계형 데이터 저장 및 쿼리가 유용함 자체 메모리 내 데이터베이스를 구축하는 것이 Postgres나 SQLite를 설치하는 것보다 간단하지 않음 동시성 코드를 작성하는 것보다 SQL을 작성하는 것이 더 쉬움
Hacker News 의견
SQLite를 사용하지 않고 자체 트랜잭션 로그를 만드는 것은 이상함
MySQL, Postgres, Redis, MongoDB 등을 사용하지 않고 자체 메모리 내 데이터베이스를 만드는 것은 복잡함
MySQL이나 Postgres의 기본적인 측면을 배우지 않으려는 것은 시간 낭비임
HashiCorp의 Nomad, Consul, Vault와 유사한 아키텍처임
RAM이 매우 저렴하다는 오해가 있음
파일 시스템 디렉토리를 테이블로, JSON 파일을 행으로 사용하는 프로젝트를 본 적이 있음
관계형 데이터베이스를 사용하는 것이 더 안정적임
복잡한 것을 피하기 위해 자체 Raft 합의 계층을 구현함
현대의 데스크탑 및 모바일 앱은 종종 SQLite와 같은 데이터베이스를 사용함
자체 메모리 내 데이터베이스를 구축하는 것이 Postgres나 SQLite를 설치하는 것보다 간단하지 않음