brunch

You can make anything
by writing

C.S.Lewis

by 스캇아빠 Jun 27. 2024

데이터베이스

오라클은 메트릭스에 나오기 전부터 유명했다.

데이터베이스를 알기 위해서는 컴퓨터 프로그래머를 크게 나누는 방법을 알아야 한다. (휴~ 안타깝지만, 오늘도 배보다 배꼽이 더 클 것 같다.) 컴퓨터 프로그래머는 크게 백엔드 개발자와 프런트엔드 개발자로 나뉜다.


1. 프런트엔드 개발자


프런트엔드 개발자는 주로 프로그램 사용자가 눈으로 보고 버튼을 눌렀을 때 등을 관리하는 프로그램을 개발한다. 지금처럼 모든 사용자 인터페이스가 웹으로 구현되기 전에는, 한 개의 프로그램에서 여러 개의 뷰를 보여주는 것이 상당히 복잡했다. 지금처럼 웹페이지를 여러 개 탭으로 띄워서 조작하는 세상에서는 이해할 수 없을 만큼 모든 게 철저하게 계산되어야만 프로그램이 동작할 수 있었다.


지금 사용하는 이메일 서비스가 하나의 프런트엔드 프로그램이라고 생각해 보면, 왼쪽에 메일 박스가 있었고, 각 메일박스를 클릭하면, 오른쪽 상단에 메일박스에 있는 메일들 리스트가 제목과 보낸 사람 날짜가 표시되어 나열되어 있고, 그 메일을 클릭하면, 오른쪽 하단에 메일 내용을 보여준다. 메일 내용은 웹페이지처럼 색이나 그림이 표시될 수 있어야 한다. 그리고 그 메일을 전달하거나 답장할 수 있는 버튼, 삭제 버튼 또는 다른 메일박스로 옮기는 버튼들이 있다. 프런트 엔드 개발자들은 그런 버튼들을 배치하고, 각 버튼이 눌렸을 때마다의 기능을 설정한다. 만약 메일이 선택되어 있지 않다면, 그런 버튼들을 누를 수 없게 연하게 표시하고 누르는 액션이 없게 해야 한다. 메일 리스트에서 제목을 클릭하면 제목으로 오름차순 정렬을 하고, 한번 더 누르면 내림차순으로 정렬한다. 날짜는 텍스트 오름차순으로 하면 안 되고, 날짜의 오름차순으로 정렬해야 한다. 예를 들어 2023-2-24는 2023-12-31 보다 먼저 나와야 한다. 하지만 텍스트로 하면 1이 2보다 작기 때문에 이상한 정렬이 되어 버린다. 오름차순이나 내림차순으로 정렬된 항목의 제목옆에는 화살표를 표시해서 정렬되었다고 알려줘야 한다. 메일박스는 가다가 순으로 정렬해서 보여줘야 하거나 만들어진 날짜 순으로 정렬시켜야 한다. 하지만, 받은 편지함과 보낸 편지함은 메일박스가 기본으로 먼저 보여줘야 한다.


이런 화면에 보이는 모든 것들을 만드는 사람이 프런트엔드 개발자다.  프런트엔드 개발자는 비교적 오류에 덜 민감하다. 데이터의 보안은 벡엔드에서 이미 처리가 되어 있어야 하고, 오류가 발생하더라도, 주로 화면에 보이는 오류라 실제 데이터는 문제가 없고, 있다 하더라도 1개 정도만 생기기에 벡엔드 개발자보다 책임에 자유로울 수 있다. 버튼에 "메일"이라고 쓸걸 "매일" 이라고 쓴다고 해서 크게 문제 되지 않는다. 하지만 프런트엔드 개발자는 벡엔드 개발자보다 훨씬 바쁘다. 버튼의 크기를 조정하고자 하는 사람도 있고, 버튼 간 공간을 더 벌이거나 줄이기도 하고, 라벨의 폰트를 바꾸거나 글자 크기를 조정하고자 하는 요구사항들을 들어주다 보면 어느새 청년은 중년이 되고, 열정보다는 투정이 가득 차서 하루에도 10번씩 이놈의 회사 때려치울까를 외치게 된다.


2. 백엔드 개발자


백엔드 개발자는 눈에 보이지 않는 일을 처리한다. 프런트 엔드 프로그램 (이메일 프로그램이나 웹페이지)은 사용자의 컴퓨터에 존재하지만, 실제 데이터를 관리하는 백엔드 프로그램은 서버라는 곳에 있어서, 프런트엔드 프로그램이 보내주는 요청사항을 처리를 처리하고, 결과를 알려주게 된다.


예를 들자면, 위에서 이야기한 이메일 프로그램은 실제 사용자의 컴퓨터나 핸드폰에 위치하게 되고, 그 프로그램이 보내는 신호를 이메일이 실제 존재하는 곳 (서버)으로 보내면, 이메일 서버에 있는 프로그램은 메일박스 리스트나 이메일 리스트, 이메일 내용 등을 클라이언트 서버로 응답한다는 것이다. 때로는 클라이언트는 정말 최소한의 일, 그러니까 화면에 표시되는 일을 하고, 실제 데이터는 모두 서버에서 모든 가공된다. 예를 들어 제목으로 정렬해서 보여주는 것도 정렬을 서버에서 하는 경우도 있다.


이렇게 백엔드 개발자는 화면에 보이는 것이 아닌, 요청과 응답을 관리하게 되고, 그 요청과 응답은 모두 데이터 관리로 이어진다. 요청에 대한 응답은 인증되지 않은 사용자에게 전달될 수 없고, 그래서 백엔드 개발자는 하나라도 오류가 발생하면, 대형사고로 이어진다. 내가 어머니와 했던 카톡 내용을 누나가 본다고 상상해 보면 얼마나 큰일인지 금방 알 수 있다. 그래서 백엔드 개발자는 보통 일은 별로 안 바빠 보이는데, 눈에 다크서클이 가득하고, 손톱을 물어뜯고 있다던지, 자꾸만 혼자 중얼거리는 것을 보게 된다. 만약 그런 사람을 보게 되면, 꼭 이야기해 주자 "은행 데이터에 UPDATE 명령어를 WHERE 절 없이 날리고도 지금 행복하게 잘 사는 사람이 있으니, 너무 걱정 말고, 일단 밥이나 먹자"라고


3. 그래서 데이터베이스는 언제 말할 건데?


말이 길어졌다. 이제 이 글을 쓰기 시작한 지, 몇 시간이 지났고, 새벽이라 졸리고, 새벽이라 배도 고프고, 커피를 마시자니, 내가 진짜 작가도 아니고, 누가 내 글을 읽는다고 이걸 이렇게 열심히 써야 하는지 하는 의구심도 생기고.. 하지만, 내일 또 이걸 붙잡고 쓸 수는 없으니, 일단 계속 쓴다.


그래서 데이터베이스! 백엔드 개발자는 보통 요청을 응답으로 돌려주는 역할을 한다. 그런데 그 응답이란 것이 요청사항에서 제시한 내용만으로는 답을 할 수 없는 경우가 너무나 많다. 예를 들어 1+1 이 요청사항이라면 2라는 응답을 주면 간단하지만, (2013 세금신고에서 소득으로 신고한 금액)과 (2023년도 세금신고에서 기부금으로 신고한 금액)을 곱한 금액이라고 하면, 2013년 세금신고에서 소득을 찾아야 하고, 2023년 기부금을 찾아봐야 한다. 그리고 그 데이터들을 저장해 놓은 곳이 보통 데이터베이스라고 부르는 것들이다. (참고로는 내 답은 0이다. 소득이 0일까? 기부금이 0일까?)


데이터베이스는 빠르게 데이터를 읽고/쓰고 여러 명이 한꺼번에 쓰더라도 무결성을 보장하면서 속도도 보장하는 역할을 한다. 은행에 100원을 넣고 두명이 동시에 100원을 인출하면 오류가 발생해서 200원 인출이 인출될지도 모른다는 생각은 이제 그만해야 한다.

이전 06화 통신과 웹페이지
brunch book
$magazine.title

현재 글은 이 브런치북에
소속되어 있습니다.

작품 선택
키워드 선택 0 / 3 0
댓글여부
afliean
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari