레거시(legacy)
란 유산이라는 뜻으로, 오래 전에 개발된 시스템을 레거시 시스템이라고 한다. (180p)
개발자는 자신이 만든 프로그램에 완벽하게 책임을 져야 한다. 개발자가 만든 프로그램은 사람들에게 영향을 주기 때문이다. (181p)
SQL
은 structure query language의 줄임말로, 데이터베이스를 다루는 언어이다.(184p)
데이터베이스는 데이터를 보관하는 창고 역할만 하고 데이터를 직접 정리하거나 처리하는 능력은 없다. 그런 일들은 DBMS이 한다. DBMS(database management system)
은 이름 그대로 데이터베이스를 관리하는 시스템을 말한다.
MySQL, PostgreSQL, SQLite, Oracle, MariaDB등 다양한 종류의 DBMS가 있고 각각의 언어의 특징들은 조금씩 다르다. (185p)
SQL 문법은 크게 어렵지 않지만, ORM(object relational mapping)
으로 인해 개발자들은 SQL을 잘 다루지 않는다. ORM은 사용자에게 익숙한 프로그래밍 언어로 SQL을 사용할 수 있게 해주기 때문이다. 다만, ORM만으로 해결하기 어려운 상황도 있으니 지나치게 의존해서는 안 된다. (189p)
NoSQL
은 언어의 특징만 있는 것이 아니라 그들이 사용하는 데이터베이스 자체의 성질도 다르다. 도큐먼트 데이터베이스(document DB), 키값 데이터베이스(key-value DB), 그래프 데이터베이스(graph DB) 등 다양한 종류가 있다. (190p)
도큐먼트 데이터베이스(document DB)
는 데이터를 JSON 형태로 저장한다. 데이터마다 구성이 같을 필요가 없어 개발자가 원하는 모양, 원하는 종류의 데이터를 저장할 수 있다. 대표적으로는 몽고디비(MongoDB)가 있다. (191p)
키값 데이터베이스(key-value DB)
는 읽는 속도가 굉장히 빠르다는 특징이 있다. 대표적으로는 카산드라디비(CassandraDB),다이나모디비(DynamoDB)가 있다.
그래프 데이터베이스(graph DB)
는 열이나 도큐먼트가 필요하지 않고, 각각의 노드로 이루어져있다. (192p)
16.8.1과 같이 숫자 3개를 사용하는 버전 표기 방식을 시맨틱 버저닝(sementic versioning specification, SemVer)
이라고 한다. 모든 사람들이 이 방식을 사용하지는 않지만 가장 널리 쓰이는 방식이다. (198p)
가장 첫번째 숫자는 프로그램에 엄청나게 큰 변화가 있을 때 바뀐다. 이 때는 새 버전에 맞춰 코드를 업데이트 해야하는 부분이 많다.
두번째 숫자는 기존의 버전에 새 기능을 추가하는 수준일 때 바뀐다. 이 때는 코드를 크게 수정해야하는 부분이 첫번째 숫자의 경우보다 적다.
마지막 숫자는 패치나 버그 수정을 의미한다. 4.0.25라면 수정을 25번 했다고 생각해도 된다. (199p)
위에서 내용을 정리하지는 않았지만, IT 쿠키 상식에서 개발자는 꼭 맥북을 사용해야 하나? 라는 내용이 있었다. 이 질문은 내가 개발 공부를 시작한 지 얼마 되지 않았을 때 개발자 지인에게 던졌던 질문이었다. 대부분의 대답은 멋, 스타벅스 입장권 등 장난 섞인 대답이었다. 하지만 책에서 말하는 내용은 개발 시간을 크게 줄여주는 물건, 동기 부여를 할 수 있는 물건, 방해 요소를 줄일 수 있는 물건이라니... 노트북이 나를 죽여줘! 하고 있는 상황에서 혹하게되는 말 들이다. 아무래도 조금 더 고민해보고 구매할 듯하다.
꽤 최근에 SQL과 NoSQL에 대해 배웠던터라 궁금하거나 이해되지 않는 내용이 없었다!