맨땅에 헤딩한다는 말이 있다. 아무것도 없는 상태에서 문제에 부딪히면서 결국 해결해낸다는 뜻이리라.

 

언젠가 유퀴즈였던 것으로 기억하는데, 한 출연자가 기업에서 받은 어려운 과제에 대해 바로 답을 내놓을 수 있는 이유는 미리 그 문제와 비슷한 문제에 대한 고민을 해봤기 때문이라고 말하는 장면이 기억난다. 결국 한번 해본 문제는 더 좋게, 잘 해결할 수 있다.

 

개발자들에게는 그러한 역량이 뭘까? 결국 직접 만들어본 경험이라 생각한다. 책으로 지식을 쌓고, 프로젝트를 통해 적용해 보면서 경험하는 것. 그로 인한 Lessons Learned를 얻는 것. 이 과정이 개발 지식을 제대로 소화하는 과정이 아닐까?

 

최근 제목에 '밑바닥부터' 또는 '직접 만들어보는'이 들어간 IT서적들이 보인다.  

특히 최근 주목받는 두 권이 있는데, 하나는 길벗에서 나온 <밑바닥부터 만들면서 배우는 LLM>, 또하나는 한빛미디어에서 나온 <밑바닥부터 시작하는 웹 브라우저>이다. 둘다 파이썬으로 LLM과 웹브라우저를 만든다.  밑바닥 시리즈는 딥러닝아닌가 싶긴 한데.. 여하튼 결국 개발자/엔지니어에게 학습 경험이란 뭔가를 따라하면서 만들어 보고, 그것을 수정하면서 고장냈다가 고쳐보고, 그 과정에서 전체적인 모델이 마음속에 그려지는 과정이지 않을까하는 생각이 들었다. 하긴 소프트웨어의 개발 풀 과정을 경험해 보기 위해 사이드 프로젝트를 하는 것 아닌가.

 

 

 

덤으로 에전에 트위터에서 봤던 직접 만들기 웹사이트도 찾아서 기록해 둔다.

레디스같은 키-밸류 캐시 만들기: https://www.build-redis-from-scratch.dev/en/introduction

 

Build Redis from scratch

How to Build an In-Memory Database like Redis from Scratch with Go

www.build-redis-from-scratch.dev

 

엇. 예전 알던 자신만의 레디스 만들기 사이트 갔더니, 레디스 뿐만 아니라 쉘, grep, 인터프리터, 토런트, 카프카, SQLite, HTTP 서버 만들기가 생겼다.추석때 해보자(추석때 해야할 게 너무 많구나....)

https://app.codecrafters.io/catalog

 

The Software Pro's Best Kept Secret.

Real-world proficiency projects designed for experienced engineers. Develop software craftsmanship by recreating popular devtools from scratch.

app.codecrafters.io

 

반응형

개발업무를 진행하다 보면 어느 순간에는 데이터베이스를 사용하게 됩니다. 데이터는 애플리케이션의 핵심이니깐요. 어느 정도 규모를 넘어서 데이터를 관리하는 시스템이 별도로 필요할 때 DBMS, 특히 관계형 DB를 먼저 떠올리게 됩니다.

개인적으로는 클라이언트에서만 사용한다면 SQLite, 서버로 이용될 경우에는 Postgresql이나 MS SQL Server를 선호합니다. 특별한 이유는 없습니다. 예전에 제가 공부할 때에는 mysql은 트랜잭션 지원이나 서브쿼리 등이 PostgreSQL에 비해 부실했기 때문입니다.

하지만 역시 오픈소스의 발전 속도는 참 빠르고 거침없습니다. 어느새 MySQL도 트랜잭션이나 고급 쿼리문에 이어 고가용성까지 지원하고 있고, 대용량 서비스에 활용되고 있다는 소식을 쉽게 접하게 되었습니다. 그래서 이번에 mysql을 중심으로 DB에 관한 지식을 재충전할 목적으로 이 책을 읽었습니다.

 

저는 1부와 2부는 설렁설렁 보았습니다. 이미 다른 DBMS를 많이 다뤄보았었기 때문에, mysql의 특이점만 살펴보면서 읽었습니다. DBMS를 처음 공부하시는 분들은 2부가 가장 중요합니다!!! 2부는 기본적인 데이터베이스 설계 및 SQL에 관한 내용을 담고 있습니다. 꽤 상세하게 단계별로 설명하고 있습니다. 웬만한 SQL 기본서적보다 괜찮다고 생각합니다.(현실적인 DB를 가지고 SQL을 설명하고 있어요.)

Learning mySQL.나비책

이 책은 크게 4부분으로 나뉩니다.

 

1부는  주로 설치에 관한 내용입니다. 이 부분은 조금 애매하다고 생각됩니다. 클라우드의 시대라 예전처럼 리눅스 패키지 관리자나 소스에서 컴파일하는 경우는 거의 없을 것 같습니다. 이런 아쉬움은  14장 클라우드 MySQL에서 조금 보완이 됩니다만, 정말 조금입니다. DBaaS내용을 다루는 게 20쪽 정도에 불과합니다. 그만큼 클라우드에서 DB 사용이 쉬운 거라고 생각해야 할까요?

 

2부는 관계형 데이터베이스 기본 내용을 익히는 부분입니다.

기본적인 SQL구문을 sakila DB를 가지고 배우게 됩니다. ER Diagram, 데이터 정규화, 기본 SQL의 DDL, DML 구문들을 mySQL 관점에서 배울 수 있습니다. 그리고 제약사항들이나 조인, 중첩 쿼리등을 배울 수 있습니다. 기본적인 내용이지만, 그래도 처음 찍먹하는 개발자들은 도움이 될 것입니다. 상세히 단계별로 다루고 있습니다.

 

3부와 4부는 운영 관점입니다. 실제 서비스 환경에서 mySQL을 사용할 때 만나게 될만한 시나리오들입니다. 3부는 DBA 관점의  이야기들이 많았던 것 같아요. 물론 트랜잭션 이야기도 있긴 한데, 사용자/권한 관리나 백업 복구, 서버 튜닝에 관한 내용이 담겨 있었어요.

 

4부는 개인적으로 이 책에서 재미있게 읽은 부분입니다.  mySQL을 사용하여 고가용성을 확보하기 위한 여러 가지 방법을 소개를 하고 있습니다. 3부는 DBA관점이라면 4부는 솔루션 아키텍처 관점에서 mySQL 관련 내용을 설명하고 있습니다. 

4부 로드밸런싱과 K8S환경의 클러스터링

이 책은 관계형 DBMS를 처음 접하시거나 MySQL전체 기능을 훑어보고 싶은 분들에게 좋은 All-In-One 서적이라 생각합니다. 수준으로 보면 초급 도서라 생각됩니다.

 

나름 열심히 정리하면서 :-) 공부했어요

 

 

  "한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

반응형

+ Recent posts