[노개북] It 5분 잡학사전#8 - ep. 30~34
📌 오늘 TIL 3줄 요약
레거시는 유산이라는 뜻으로 오래전에 개발된 시스템을 레거시 시스템이라고 부른다.
NoSQL는 document, key-value, graph DB가 있으며 각 특성에 따라 용도가 다르다.
시멘틱 버전닝(e.g., 1.0.0)에서 뒤로 갈수록 작은 수정을 의미한다.
📆 TIL (Today I Learned) 날짜
2023-12-17
📚 오늘 읽은 범위
에피소드 30~34
📝 책에서 기억하고 싶은 내용
에피소드 30 코로나가 준 레거시 시스템의 교훈
레거시(legacy)는 유산이라는 뜻으로 오래 전에 개발된 시스템을 레거시 시스템이라고 한다.
코로나가 터지고 뉴저지 주지사가 TV에 나와서 "코볼 개발자를 급하게 찾는다"라고 했다. 실업자가 많아졌는데 실업자를 위한 실업 급여, 생계 지원 등을 하는 시스템이 코볼로 작성되어 있기 때문이었다.
코볼 (COBOL, Common business oriented language)
영어와 유사한 형태로 지금의 파이썬과 같은 느낌의 프로그래밍 언어
미국의 은행 시스템 가운데 43%, 미국 ATM 시스템은95%가 코볼로 개발됨
코볼의 문제점은 커뮤니티가 너무 적다는 것
프로그램으로서의 기능은 매우 훌륭하게 수행하고 있음
하지만 젊은 개발자들은 더 이상 코볼에 관심을 갖지 않음
교훈1: 프로그램은 책임 있게 만들어야 한다.
개발자는 자신이 만든 프로그램에 대해 책임을 져야 한다.
잘못 만든 프로그램은 사용하는 사람들에게 굉장히 큰 영향을 준다.
교훈2: 프로그램은 끊임없이 관리해야 한다.
충격적이게도 위 사례에서 시스템 관리자가 '코볼'을 '코발트'로 잘못 알고 있었다.
시스템은 한 번 구축하면 끝이 아니라 꾸준히 관리를 해줘야 한다.
에피소드 31 데이터와 단짝 친구, SQL
SQL은 structured query language의 줄임말로 데이터베이스를 다루는 언어이다.
DBMS(database management system)은 이름 그대로 데이터베이스 관리 시스템을 말한다.
SQL은 데이터베이스를 관리해주는 DBMS와 소통하기 위한 언어
DBMS로는 MySQL, PostgreSQL, SQLite, Oracle, MariaDB 등이 있다.
데이터를 표처럼 테이블에 행과 열의 개념으로 저장한다.
SQL을 프로그래밍 언어로 쓸 수 있게 해주는 ORM
ORM(Object, relational mapping)은 개발자에게 SQL 번역기 같은 도구이다.
ORM은 만능이 아니기 때문에 ORM에 너무 의존하는 것은 좋지 않다.
에피소드 32 NoSQL이 뭐죠?
NoSQL의 종류
Document DB
Key-value DB
Graph DB
SQL과 NoSQL은 누가 더 좋은지 비교가 의미가 없음
애초에 다른 것으로 서비스의 특성을 잘 고려하여 선택
인스타그램도 처음에는 PostgreSQL로 시작했지만 Graph DB로 이동
Document DB: 데이터 형식이 매우 자유로움
MongoDB가 대표적
데이터를 Json document 형태로 저장
SQL과 다르게 데이터의 구성이 같을 필요가 없음
Key-value DB: 읽고 쓰는 속도가 엄청 빠름
CassandraDB, DynamoDB가 대표적
CassandraDB는 column wide db로 읽고 쓰는 속도가 굉장히 빨라 대용량 데이터를 빠르게 저장해야 하거나 읽어야 할 때 좋은 선택지. 수만 개의 데이터를 1초 만에 쓸 수 있음. 애플은 10페타바이트의 데이터를 저장하고 있음, 넷플릭스, 인스타그램, 우버도 마찬가지로 사용함
DyanamoDB는 아마존이 만든 데이터베이스로 Duolingo라는 학습 애플리케이션에서 사용함. 읽는 속도가 굉장히 빨라 1초에 2만 4,000개의 데이터를 읽을 수 있음
Graph DB: 노드로 관계를 표현
페이스북에서는 데이터를 친구, 좋아요와 같은 관계로 연결한다.
이를 표현하기에 적합한 페이스북에서 개발한 데이터베이스
에피소드 33 깃 & 깃허브, 똑같은 거냐고?
깃은 파일 이력을 관리하는 프로그램
파일에 무엇을 기록했는지, 지웠는지, 파일을 아예 지웠는지 등 모두 추적
같은 파일이라도 시간에 따라 여러 버전으로 함께 보관할 수 있음
협업을 해야 하는 상황에서 변경된 부분만 비교해서 다시 하나로 만들 수 있어 유용
깃허브는 깃으로 관리한 이력을 저장하고 공유하는 공간
- 파일뿐만 아니라 깃으로 관리한 파일 이력도 함께 공유할 수 있음
에피소드 34 버전을 표기하는 방법도 있어요?
시멘틱 버전닝 (semantic versioning specification, SemVer) -
1.0.0
대표적으로 리액트나 장고가 시멘틱 버전닝을 사용함
첫 번째 숫자는 프로그램에 큰 변화가 있을 때
두 번째는 기능을 추가하는 수준의 작은 변화가 있을 때
세 번째는 패치나 버그 수정을 의미
😀 오늘 읽은 소감 및 떠오르는 생각
레거시가 유산이라는 뜻이었다는 것을 이전에 본 적이 있었는데 단순히 불편하게 만드는 존재라고 생각했던 적도 있었지만 그 상황에서 최선을 다해서 만들어낸 유산, 결과물이라는 것을 항상 마음속에 먼저 품어야겠다. 그리고 생각해보면 나도 레거시를 만들고 있는 것이다.
NoSQL의 3가지 종류에 대해서 다 들어본 적은 있지만 모두 NoSQL의 일종이라고 생각 하지 못하고 있었다는 것을 발견했다! 카산드라DB가 그렇게 많이 쓰이고 있다는 것도 몰랐는데 한 번 어떤 특성으로 그런 것인지 공부를 해봐야겠다.