Skip to main content

Command Palette

Search for a command to run...

[노개북] It 5분 잡학사전#8 - ep. 30~34

Updated
3 min readView as Markdown

📌 오늘 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가 그렇게 많이 쓰이고 있다는 것도 몰랐는데 한 번 어떤 특성으로 그런 것인지 공부를 해봐야겠다.

More from this blog

오픈소스 기여모임 10기 후기 - 첫 Pr을 올리기까지

개발자라면 누구나 한 번쯤 오픈소스 기여에 대한 환상을 가져본 적 있을 거다. 하지만 막상 시작하려면 어디서부터 해야 할지 막막하고, 괜히 대단한 걸 해야 할 것 같은 부담감에 선뜻 시작하기는 어려운 것 같다. 나 또한 해보고 싶다는 마음만 가지고 계속 미뤄왔다. 그러다 2025년 말 쯤에 오픈채팅방과 글또 슬랙 채널에서 "오픈소스 기여모임" 10기 모집글을 봤다. 2년 넘게 500명 이상의 참가자와 함께 1000개 이상의 PR을 만들어온 커뮤...

Feb 5, 20265 min read

😢 글또 10기 활동 회고 — “글또야, 가지 마…”

들어가며 드디어 글또 10기 활동 회고를 정리해본다.6개월간의 여정을 뒤돌아보니 정말 많은 일들이 있었다. 글또라는 커뮤니티를 8기가 한창 진행되고 있을 때 알았는데 이름부터 인상이 강렬했다. "글쓰는 또라이가 세상을 바꾼다." 유쾌하고 독특한 문구에 피식 웃으며, '여긴 도대체 어떤 사람들이 모이는 곳이지?' 하고 넘겼었다. 재밌는 건 결국, 나도 그 "또라이들" 중 한 명이 되었다는 것이다. 😌 글또는 개발자들이 2주에 한 번 글을 ...

Jul 31, 20255 min read
😢 글또 10기 활동 회고 — “글또야, 가지 마…”

Serverless 환경에서 배포 전 환경변수 검증 자동화하기: TypeBox와 Bitbucket Pipeline 활용기

들어가며 배포 직후, 환경변수가 제대로 설정되지 않아 여러 API가 제대로 작동하지 않는 일이 있었습니다. 다행히 밤에 사용자가 없을 때 문제가 있었던 거라 영향도는 크지 않았지만 앞으로도 계속해서 발생할 수 있는 문제이기 때문에 해결해야 겠다고 생각했습니다. 개발 단계에서 문제가 발견되면 가장 좋겠지만, 현재 팀 상황에서는 백엔드 개발을 혼자 담당하고 있어 코드 리뷰나 검증 프로세스를 갖추기가 쉽지 않았습니다. 그래서 최소한 배포 전에 자동으...

Mar 16, 20254 min read

Cloudflare Tunnel로 포트포워딩 없이 홈서버 운영하기

이 글에서 다루는 내용 포트포워딩이 안 되는 이유 (CGNAT 환경 이해) CGNAT 우회 방법들의 장단점 비교 Cloudflare Tunnel 설정 방법 (MacOS 기준) 외부에서 내 PC로 접근할 수 있도록 허용하는 방법을 생각하면 포트포워딩이 가장 먼저 떠오릅니다. 공유기에서 특정 포트를 열어 외부에서 서버에 접속할 수 있도록 설정하는 방식으로, 마인크래프트 멀티를 해보셨던 분이라면 분명 해보셨을 방법입니다. 😊 작년에 저는 홈서...

Mar 2, 20256 min read
Cloudflare Tunnel로 포트포워딩 없이 홈서버 운영하기

구름고래 공방

48 posts