2023.11.19
에피소드 30. 코로나가 준 레거시 시스템의 교훈
에피소드 31. 데이터와 단짝 친구, SQL
에피소드 32. NoSQL이 뭐죠?
에피소드 33. 깃 & 깃허브, 똑같은 거냐고?
에피소드 34. 버전을 표기하는 방법도 있어요?
레거시(legacy): 유산
레거시 시스템: 오래 전에 개발된 시스템
ex) 미국 정부 사이트
ex) 미국의 은행 시스템 중 43%
ex) 미국 ATM 시스템 중 95% 는 '코볼'이라는 오래된 컴퓨터 언어로 개발 되었다.
개발자가 만든 프로그램은 사람들에게 영향을 주기 때문에 개발자는 자신이 만든 프로그램에 완벽하게 책임을 져야한다. 너무 빠쁜 나머지 '프로그램이 돌아가기만 하면 그만이다'라는 생각으로 코드를 대충 짜는 개발자도 있는데, 그러면 안된다. ❌
개발자라면 코드를 살아 있는 생명체처럼 꾸준히 관리해야 한다. 물을 자주 주지 않아도 되는 선인장도 방치하면 죽는 것과 같다.
structured: 구조화된
query: 질문/문의
language: 언어
SQL은 데이터 베이스에 어떤 질문 또는 문의를 하기 위해 어떤 구조를 가진 언어이다. SQL은 한마디로 데이터베이스를 다루는 언어다.
SQL: "저, 데이터 베이스와 얘기 좀 하고 싶은데요."
DBMS: "아, 그러면 DBMS인 저와 이야기 하시면 됩니다."
- MySQL, PostgreSQL, SQLite, Oracle, MariaDB 등
- 같은 SQL이지만 사투리 처럼 조금씩 다르다.
- 이 모든 것들은 데이터베이스가 아닌 DBMS다!
개발자들이 ORM에 지나치게 의존해서 SQL 공부를 뒤로 미루려는 경향이 있다. 영어로 따지면 ORM라는 통역기가 있기 때문에 굳이 영어를 배우려고 하지 않는 것과 같다. 하지만 번역기가 만능은 아니듯 ORM에만 의지하면 해결하기 어려운 상황에 대처하기 어렵다.
SQL을 꼭 공부할 것!
document DB, key-value DB(키값 데이터베이스), graph DB 등
데이터 형식이 매우 자유로운 document DB
대표적: Mongo DB
데이터를 JSON(제이슨) document 형태로 저장한다.
- JSON: JavaScript object notation
Mongo DB에 저장한 데이터의 모습
[
{ "id": 1, "name": "슬리퍼", "price": 30000},
{ "id": 2, "name": "바지", "price": 50000}
]
2) key-value DB
3) graph DB
- user 1이 user 2를 팔로우 한다.
- user 2가 사진 1에 좋아요를 눌렀다.
용도에 맞게 쓰자! 실제로 인스타그램도 처음에는 PostgreSQL, 즉 SQL 데이터베이스로 시작을 했지만 회사가 점점 성장하면서 graph database (NoSQL database)로 옮겼다. 이처럼 기술에는 좋고 나쁨이 없으니 상황에 맞게 쓰자.
깃: 커피
깃허브: 커피숍
깃은 감시자다.
왕이 하는 말을 기록하는 사관처럼, 깃은 파일을 항상 지켜보는 감시자다. 깃은 내가 파일에 무엇을 기록했고, 무엇을 지웠고, 파일을 이동했는지, 파일을 아예 지워버렸는지 모두 알고있다.
깃은 어벤져스에서 여러 버전의 주인공과 같다.
같은 파일이라도 다른 버전으로 보관할 수 있다.
또다른 예로는, 소설의 엔딩이 3가지가 있고 앞의 내용을 수정하고 싶을 때 파일을 3개 준비해야 할까? 깃이 있다면 파일은 하나만 유지한 상태로 앞쪽의 수정할 내용을 한번에 적용할 수 있으면서 엔딩 버전은 3개를 준비할 수 있다.
SemVer (시맨틱 버저닝)
첫번째 숫자의 의미
1.1.0 -> 2.1.0
두번째 숫자의 의미
16.7.0 -> 16.8.0
마지막 숫자의 의미
4.0.0 -> 4.0.25