GeekNews 1

박찬미·2022년 5월 23일
0

소식

목록 보기
1/2

좋은 보스들이 사용했던 트릭

  1. 팀원들의 의견 불일치를 장려, 최고의 답을 찾는 목표를 가진 토론 환영
  2. 외부의 적을 만듦, 명분과 초점을 앞세워 조직 집결
  3. 팀원들의 의견을 먼저 듣고 마지막에 말함, 자신의 관점 형성 전 다른 정보들을 흡수
  4. 모든 성공을 팀의 공으로 돌리며 실패에 대한 책임을 짐
  5. 직원의 커리어 여정 지원
  6. 대부분의 시간을 최고 성과자들과 보내고, 최고에 더 많이 배팅
  7. 각 직원이 어떻게 다른지 배움, 누군가는 거친 사랑을 일부는 점수표를 일부는 부드러운 친절을
  8. 성과가 좋지 않은 사람이 그 자리에 머물도록 내버려 두지 않음, 룰을 바꾸거나 직원의 다음 일을 찾도록 도움
  9. 자신을 대체할 내부 후보자 리스트를 만듦, 훌륭한 직원이 훌륭한 보스가 될 수 있다는 것을 앎

SQLite

최근에는 임베디드 DB를 벗어나 분산처리(rqlite), 스트리밍 복제(Litestream), GraphQL(tuql) 등 기능을 확장한 솔루션들과 함께 여러 용도로 사용되고 있다.

  • rqlite
    SQLite 기반의 가벼운 분산 데이터베이스
    Go 언어로 만들어진 가볍고, 오픈소스이고, 분산 관계 데이터베이스
  • Litestream
    Write Ahead Log를 이용해 SQLite DB를 Replication 해주는 오픈소스
    AWS S3, Azure Blob Storage, Google Cloud Storage, SFTP, NFS 에 대한 SQLite 변경 사항을 지속적으로 스트리밍한다. 만약 서버가 다운되면 실패한 지점으로 빠르게 복구한다.
    분리된 프로세스에 의해 실행되기 때문에 코드 변화 없이 기존 애플리케이션으로 통합할 수 있다.
    적은 금액이 들어간다.
  • GraqhQL(tuql)
    API를 위한 쿼리 언어, 클라이언트가 요청한 만큼 데이터를 서버로부터 효율적으로 가져오는 것이 목적
    어떤 특정 데이터베이스 또는 스토리지 엔진이든 종속되지 않고 대신 기존 코드와 데이터에 의해 지원받는다.

요즘엔 '빅데이터'가 많이 거론되지만, 대부분 어플리케이션은 크게 성공하더라도 테라바이트 수준의 데이터를 보기 어렵다. 이에 따라 자신에게 알맞은 솔루션을 찾는 것이 중요하다.

긱뉴스에서는 Litestream을 만든 벤 존슨의 개발 이야기를 정리한 내용도 올려주었다.

  • 요약
    SQLite는 임베디드 DB로 일반적인 아키텍처 티어에선 존재하지 않는, 사용자의 어플리케이션 서버 프로세스에 링크되는 그냥 라이브러리 = 다른 서버에 의존하지 않고 혼자 실행 되는 "싱글 프로세스 어플리케이션"

    벤 존슨은 임베디드 Key/Value DB인 BoltDB를 만듦, BoltDB는 안정적이고 인프로세스 DB에서 기대하는 것처럼 Nitro가 달린 장난감 자동차 같은 성능을 보여주지만 스키마가 Go코드로 정의되기 때문에 DB 마이그레이션이 어려움, 사용자가 도구를 직접 만들어야 하고 심지어 REPL(콘솔 화면에서 구문을 입력하면 바로 결과를 반환하고 다시 입력할 수 있는 도구)도 없음
    이 때문에 SQLite를 만듦
    하지만 제약 존재, 단일 프로세스 어플리케이션은 SPOF(Single Point of Failure)가 있어 서버를 잃어버리면 데이터베이스도 잃어버림(스토리지 오류에 대한 복원력이 별로), 규모가 클 때의 동시성 부족
    그래서 Litestream에 주목

    Litestream은 SQLite의 WAL(Wrtie Ahead Log) 모드 저널링을 제어함으로써 동작, WAL모드에서는 쓰기 오퍼레이션들이 SQLite의 메인 DB 파일외의 별도 로그파일에 추가됨, 자동 체크포인트를 방지하는 무한 읽기 트랜잭션을 오픈하고 WAL 업데이트를 직접 캡쳐하고 복제하고 스스로 체크포인트를 트리거함(제어)
    DB는 탄력적이고 쉽게 옮기거나 마이그레이션 가능해짐 또한 SQLite DB간 실시간 복제 가능(분산 Read Replica와 Write-Leader DB를 셋업하는 게 가능해짐)

JavaScript와 TypeScript

자바스크립트는 요즘 가장 많이 쓰이는 '동적' 타입 언어, 하지만 실행하기 전에는 '타입'을 알 수 없어 실제 운영 시에 오류가 발생할 수 있는 문제가 있다.
이 문제를 해결하기 위해 마이크로소프트는 자바스크립트에 타입 검사를 추가한 타입스크립트를 만들었고 점점 인기가 많아지고 있다.
이에 따라 타입 검사에 대한 관심이 높아진 가운데 프로그래밍 언어 속 타입이라는 책이 전체공개되었다.

  • 일부 요약
    버그 없는 프로그램을 만들기란 불가능에 가까움, 버그를 고치는 것도 중요하고 어렵지만 더 중요하고 어려운 일은 버그를 찾는 것. 만약 개발 과정에서 미처 버그를 발견하지 못한 채 프로그램을 배포한다면 사용자가 버그 때문에 피해를 볼 것임

    버그의 가장 흔한 원인은 타입 오류
    타입은 프로그램에 존재하는 값들을 그 능력에 따라 분류한 것(string, boolean...) 그런데 이 타입에 맞지 않게 사용한다면 프로그램에 문제가 생김 -> 해결을 위해 타입 오류를 일으키는지 자동으로 판단해주는 프로그램 타입 검사기를 이용해야 함, 그러나 아직까지 이런 타입 검사기(이상적인 = 검사 후 오류 없으면 통과, 있으면 거부+오류 메시지)는 존재하지 않음
    현실적인 타입 검사기는 타입 오류가 없는 경우에 통과 또는 거부+오류 메시지가 나올 수 있음

데이터 엔지니어

업무

  • 서비스의 다양한 곳에서 발생하는 정형/비정형 데이터를 수집하기 위한 배치/실시간 파이프라인 구축 및 운영
  • 데이터 레이크/데이터 웨어하우스 등 전사 인원들의 원활한 데이터 분석을 위한 데이터 플랫폼 운영
  • 대용량의 데이터 가공을 통해 실제 서비스 혹은 분석에 사용될 수 있는 데이터 마트 구축
  • 데이터 기반 서비스 제공 및 서빙 - 관련 Ops 담당

갖춰야 할 기술

  • 분산 처리에 대한 기본적인 이해
  • DB/SQL에 대한 이해
  • 프로그래밍
  • (클라우드) 인프라에 대한 이해
  • 서비스에 대한 이해
  • 뛰어난 커뮤니케이션 스킬
  • Time to market을 지키는 능력(일을 적절히 쪼개고, 마일스톤에 맞춰 배포할 수 있는 능력)
  • Time to market을 지키지 않을 능력(무리하게 하지 않고 시간을 가지고 수행)

출처
GeekNews Weekly 150
rqlite
Litestream
GraphQL
GraphQL
데이터 엔지니어

0개의 댓글