데이터베이스를 손으로 느끼는 순간 — Rails로 ‘기억하는 웹서비스’를 직접 만들어보자

데이터베이스를 직접 만들어보며 웹서비스의 기억, 연결, 검색 등을 경험하세요. Rails로 Post 모델 생성하고 DB와 상호작용하는 방법을 익히는 시간.

밤치 37

우리는 방금까지 데이터베이스(DB)를

도서관, 기억, 사서, 네트워크 같은 비유로 설명했다.

이제는 그것을 실제로 눈앞에서 움직여보자.

웹서비스가

어떻게 정보를 저장하고,

어떻게 기억하고,

어떻게 다시 꺼내 보여주는지,

어떻게 서로 연결하는지,

Rails로 직접 따라 해보면서

몸으로 느껴보는 시간이 왔다.


Part 1. “웹서비스의 기억” 만들기

Post(게시글) 모델을 만들어보자

웹의 기억은 기록에서 시작된다.

우리는 기록을 “글(Post)”이라고 하자.

터미널에서:

rails generate model Post title:string body:text
rails db:migrate

이 두 줄이 말하는 것은 아주 단순하다.

  • “title과 body라는 기억 공간을 가진 Post라는 구조를 만들게요.”

  • “그리고 그 구조를 실제 DB라는 기억창고에 반영할게요.”

이제 Rails는 도서관의 “책장(Post 테이블)”을 만들었고,

그 책장에 “title, body” 두 칸짜리 책을 꽂을 수 있게 된 것이다.


Part 2. Rails console로 들어가 DB와 직접 대화하기

도서관의 서가에 책을 꽂아보자

터미널:

rails console

그리고 책을 한 권 넣어보자.

Post.create(title: "나의 첫 글", body: "Rails DB에 저장됐다!")

엔터를 누르는 순간,

당신은 웹서비스의 “기억”에

첫 번째 데이터를 기록했다.

지금까지 만든 어떤 코드보다

이 한 줄이 훨씬 더 강력하다.

왜냐하면 이것은

사라지지 않는 기억을 만든 것이기 때문이다.


Part 3. DB는 “절대 잊어버리지 않는 공간”이다

Rails console에서 다시 물어보자.

Post.all

그럼 Rails는 DB에게 이렇게 말한다.

“Post 서가에 꽂힌 모든 책을 가져와줘!”

그리고 DB는 단 한 치의 오차 없이

방금 저장한 데이터를 가져온다.

이게 바로

웹서비스의 기억이자, 절대 잊어버리지 않는 공간이다.

서버를 껐다 켜도,

컴퓨터를 다시 시작해도,

일주일 뒤에 들어와도

그 기억은 그대로 남아 있다.


Part 4. “정교하게 정리된 도서관” 체험하기

ID, created_at, updated_at은 도서관의 분류 시스템이다

방금 만든 Post를 다시 확인해보자.

post = Post.first
post.id
post.created_at
post.updated_at

당신은 이제 알게 된다.

  • id = 책 번호

  • created_at = 책이 만들어진 날짜

  • updated_at = 마지막으로 수정한 날짜

DB는 당신이 하지 않아도

모든 기록을 꼼꼼하게 정리해둔다.

이 기록들은

수많은 데이터를 구조화해서 저장하는 기반이 된다.

DB는 단순한 공간이 아니라

정교하게 정렬된 도서관이다.


Part 5. “수백만 개도 빠르게 찾는 사서” 경험하기

조건으로 책을 찾아보자

Post.where(title: "나의 첫 글")

Rails는 DB에게 말한다.

“제목이 ‘나의 첫 글’인 책만 찾아줘.”

DB는 순식간에 찾아서 보여준다.

데이터가 10개든, 1,000개든,

100만 개든,

정확하게 찾는다.

왜냐하면 DB는

엄청난 규모의 도서관에서도 즉시 찾아주는 초인적인 사서를 가지고 있기 때문이다.

당신은 방금

그 능력을 직접 사용한 것이다.


Part 6. “서로 연결된 지적 네트워크” 직접 만들기

댓글(Comment)을 만들어 Post와 연결하자

웹서비스가 진짜로 강력해지는 순간은

데이터가 서로 연결되기 시작할 때이다.

예를 들어

블로그 글(Post)에 댓글(Comment)을 달 수 있게 해보자.

rails generate model Comment body:text post:references
rails db:migrate

이 모델은 이렇게 말한다.

  • “댓글은 내용(body)이 있고”

  • “어떤 글(post_id)에 속해 있는 데이터를 저장하겠다”

Rails에게 관계를 알려주자

app/models/post.rb

class Post < ApplicationRecord
  has_many :comments
end

app/models/comment.rb

class Comment < ApplicationRecord
  belongs_to :post
end

이제 Post와 Comment는

완벽하게 연결된 지적 네트워크가 된다.


Part 7. 실제로 연결된 데이터를 만들어보자

console에서:

post = Post.first
post.comments.create(body: "첫 댓글입니다!")
post.comments.create(body: "두 번째 댓글!")

이제 댓글을 읽어보자.

post.comments

DB는 정확히 알고 있다.

  • 어떤 댓글이 어떤 Post에 속해 있는지

  • 어떤 글에 몇 개의 댓글이 달렸는지

  • 그 댓글들이 언제 저장되었는지

데이터가 서로 연결되는 순간

웹서비스는 비로소 “유기적인 시스템”이 된다.


Part 8. 이제 당신은 DB가 왜 웹서비스의 “심장”인지 이해했다

지금까지 따라 온 짧은 실습에서

당신은 다음을 경험했다.

웹서비스의 기억

→ 데이터를 저장하고 다시 꺼내는 과정

절대 잊어버리지 않는 공간

→ Post.create로 만든 데이터가 영구적으로 유지됨

정교한 도서관

→ id, timestamps 등 자동 정리 기능

수백만 건도 빠르게 찾는 사서

→ Post.where로 원하는 데이터 검색 가능

지적 네트워크

→ Post ↔ Comment 관계를 설정하여 데이터 간 연결 생성

웹서비스의 심장

→ 기억 + 관계 + 검색이 모두 DB에서 이루어짐

당신은 지금,

웹서비스가 왜 데이터베이스 없이는 존재할 수 없는지,

그리고 DB를 다루는 것이 곧 웹서비스를 다루는 것임을

손끝으로 이해하게 되었다.


이제 독자의 마음에 싹트는 생각

여기까지 따라온 독자는 반드시 이렇게 느낀다.

“잠깐… 나도 이 정도면

내 블로그 하나쯤 만들 수 있겠는데?”

“친구들이랑 같이 쓸 TODO 앱도 만들 수 있을 것 같은데?”

“웹서비스… 생각보다 할만한데?”

바로 이것이 우리가 목표하던 각성의 순간이다.

데이터가 손에 잡히는 순간,

웹서비스는 더 이상 먼 미래의 기술이 아니라

지금 내 손에서 만들어지는 현실이 된다.

그리고 Rails는 당신에게 이렇게 속삭인다.

“이제 어떤 서비스를 만들지 결정해봐.

그 다음은 내가 도와줄게.”