Community

개발자 99% 커뮤니티에서 수다 떨어요!

← Go back

[TIL] IT 5분 잡학사전 7

#book_club
1년 전
576

TIL (Today I Learned) 날짜

2023.11.19

오늘 읽은 범위

에피소드 30. 코로나가 준 레거시 시스템의 교훈

에피소드 31. 데이터와 단짝 친구, SQL

에피소드 32. NoSQL이 뭐죠?

에피소드 33. 깃 & 깃허브, 똑같은 거냐고?

에피소드 34. 버전을 표기하는 방법도 있어요?

IT 쿠키 상식 개발자는 꼭 맥북을 사용해야 하나?

책에서 기억하고 싶은 내용을 써보세요.

에피소드 30

오래된 개발 시스템을 흔히 레거시 시스템이라고 말한다.

  • 프로그램은 책임 있게 만들어야 한다.

  • 프로그램은 끊임없이 관리해야 한다.

에피소드 31

SQL이란 데이터베이스에 어떤 질문 또는 문의를 하기 위한 구조화 언어이다.

그러나 사실 데이터베이스는 데이터를 보관하는 창고의 역할만 하며, 데이터베이스 관리 시스템(Database Managment System, DBMS)이 데이터베이스를 관리한다. 즉, SQL은 DBMS와 대화하기 위한 언어이다. DBMS의 예시로는 MySQL, PostgreSQL 등이 있다.

ORM(Object Relational Mapping)을 통해 개발자는 자신에게 익숙한 프로그래밍 언어로 SQL을 사용할 수 있다. 그러나 이에 너무 의존하다 보면 SQL을 사용해야 하지만 ORM을 사용할 수 없는 환경에 대처하기 어렵다.

에피소드 32

NoSQL에는 여러 가지가 있으나, 대표적으로 document DB, key-value DB, graph DB를 꼽을 수 있다.

Document DB의 대표적인 예는 MongoDB이다. MongoDB의 경우 데이터베이스를 json 도큐먼트 형태로 저장한다.

key-value DB의 예시로는 Cassandra DB, Dynamo DB 등이 있으며, 읽고 쓰는 속도가 굉장히 빠르다.

마지막으로 graph DB는 노드와 관계망을 통해 정보를 저장한다.

용도에 맞게 사용하는 것이 중요하다.

에피소드 33

깃은 항상 파일을 지켜보며 파일 이력을 관리하는 프로그램이다.

깃허브는 파일과 깃으로 관리한 이력을 저장하고 공유하는 공간이다.

에피소드 34

SemVer(Semantic Versioning Specification)는 숫자 3개로 표시하는 버전 표기 방식이다.

첫째 숫자는 아주 커다란 변화를, 중간 숫자는 마이너한 업데이트를, 마지막 숫자는 패치 혹은 버그 수정을 의미한다.

IT 쿠키 상식 개발자는 꼭 맥북을 사용해야 하나?

개발자가 어떤 물건을 사용하기 위해 해야 할 질문은 아래와 같다.

  • 시간을 많이 절약해줄 수 있는 물건인가?
    개발자마다 의견이 다르다.

  • 동기 부여를 할 수 있는 물건인가?
    매우 비싼 만큼 잘 써야겠다는 마음이 들기는 한다.

  • 방해 요소를 줄일 수 있는 물건인가?
    Mac OS는 게임을 위한 운영 체제가 아니라서 게임을 저절로 덜 하게 된다.

오늘 읽은 소감은? 떠오르는 생각을 가볍게 적어보세요

에피소드 30

이 부분은 IT와 관련된 사람들이 꼭 알아둬야 하는 부분인 것 같다.

우리 나라 정부, 은행 등 커다랗고 보수적인 기업의 경우 진짜로, 진짜로 레거시 시스템이 많다. (Java 개발자를 많이 뽑는 이유기도 하다.) 80년대부터 바뀌지 않은 장비와 OS를 보고 있으면 생각이 멍해질 때도 가끔 있다. 이러한 사례를, 이러한 글을 보고 많은 IT 관리자들이 고민해야 한다고 생각한다.

에피소드 31

AI와 빅데이터가 집중을 받고 있는 요즘, SQL은 정말 중요한 언어라고 생각한다. 특히나 데이터 관련 업계에서 가장 많이 쓰는 언어 두 번째가 SQL임을 감안하면 (첫 번째는 Python이다) 더더욱 중요하지 않을까.

에피소드 32

NoSQL 또한 빅데이터로 인해 주목을 받았다. 기존 SQL과 같은 RDBMS(Relational DBMS, 관계형 DBMS)의 경우 테이블의 한 요소도 빠지면 안되는 경우가 잦은데, 이를 위해서는 Transform을 먼저 거칠 필요가 있었다. 즉, 데이터를 추출(Extract)하고, 변환(Transform)하고, 적재(Load)하는 과정(ETL이라고 한다)을 거쳐야 하는데, 빅데이터의 경우 데이터가 쌓이는 속도와 양이 기존의 데이터와 비교가 안 되다 보니 이 과정 자체를 바꿀 필요가 있었다. 덕분에 빅데이터의 경우 ELT(추출, 적재, 변환)가 더욱 어울리게 되는데, 변환을 거치지 않은 채 적재하기 위해 제격인 게 비교적 데이터 형태에 자유로운 NoSQL이었고, 덕분에 주목을 받게 되었다고 들었다.

그렇다고 기존의 SQL이 중요하지 않은 건 아니다. ETL의 T가 못 따라가서 ELT를 채택했을 뿐이지, ETL이 가능하다면 변환시켜서 적재하는 것이 당연히 더 좋으리라고 본다. (내 방 정리를 안 해도 되지만, 정리를 하면 더 좋은 것처럼!)

책에 적힌 것처럼 딱 맞는 구조를 채택하면 된다.

에피소드 33

깃과 깃허브도 사실 최근까지 몰랐다. 쓸 일이 있었어야 알지.

오픈 소스의 Market Value 순위로서 Git이 2위고 그 Leading Company가 GitHub라는 점만 알고 있었다. (참고로 1위는 Linux와 Red Hat, 3위는 MySQL과 Oracle이다)

여기서 일단 Git가 Open Source Project고 GitHub는 그걸 이용해 돈을 버는 회사구나! 정도만 알고 있었는데, 노마드 코더 클론 코딩을 통해, 그리고 책을 통해 명확하게 알게 된 것 같다.

에피소드 34

어느 정도까지는 알았는데, 명확한 차이는 이 책을 통해 알게 되었다.

개발자는 꼭 맥북을 사용해야 하나?

사실 이 내용은 구글에 영어로 검색도 해본 적이 있다. "개발자는 맥북을 사용해야 하나요?"

여러가지 고려 사항이 있었다. 책에서 정성적 요소를 이야기했기 때문에, 정량적 요소들에 대한 생각을 하나씩 적어보려고 한다.

OS. 기존에는 macOS가 POSIX 기반 OS였기 때문에 (=Windows에 비해 LINUX에 가깝다) macOS를 선택할 메리트가 더 컸지만, WSL이 등장하면서 그 간격이 좁아졌고, 여차하면 기존 OS를 아예 밀어버리고 Linux를 새로운 운영 체제로서 설치할 수도 있게 되었다 보니 고려할 요소가 되지 않는다고 봤다.

하드웨어. 가격이 비싸지만 그 가격을 부담할 수만 있다면 굉장히 좋다고 생각한다.

호환성. Windows에서는 iOS와 macOS를 위한 소프트웨어를 개발할 수 없다. 그러나 반대는 가능하다. (이기적인 사업 전략이라고 생각은 하지만 어쩌겠는가)

이러한 면들까지 고려했을 때 든 생각이 (이전 TIL에도 올렸던) 노트북은 맥북, 데스크톱은 Windows였다. 물론 현재로서는 멀어보이는 길이긴 하다. (M3의 경우는 내 1년 적금의 반이 날아가더라!) 그래도 한 걸음씩 다가가면 언젠가는 다다를 수 있지 않을까.

궁금한 내용이 있거나, 잘 이해되지 않는 내용이 있다면 적어보세요.

오늘 읽은 다른 사람의 TIL