2022-03-28 TIL

이창호·2022년 3월 28일
0

프로그래머스 백엔드 데브코스 8일차

배움의 자세!

러닝커브

정체기는 무조건 있다. 그 과정을 버텨야한다.
등산처럼 꼭대기까진 엄청나게 힘들지만 오르고 나면 엄청난 성취감이 기다리고 있다.
즉, 정체기 뒤에는 엄청난 발전이 기다리고 있다.
과정을 즐겨라.

메타인지

내가 뭘 모르는지 생각해봐야한다. 즉, 메타인지가 필요함.
메타인지가 있으면 구체적인 질문도 가능함.

내가 알지 못한 노력

잘하는 사람들보고 기죽지 말아야한다. 왜냐면 잘하는 사람은 그만큼의 시간을 쏟아부었기 때문이다.

DB가 필요한 이유

서비스에 쓰이는 데이터

서비스들은 사용자들에게 기능을 제공하기 위해선 데이터는 필수다.
(사용자정보, 추천시스템, 구매이력 등)

RDBMS & SQL

RDBMS는 구조화된 테이블들의 집합으로 구성하여 저장하고 관리한다.
그리고 RDBMS을 관리하기 위해 사용하는 프로그래밍 언어가 SQL이다.

프로덕션 RDB

RDBMS를 프로덕션 관계형 데이터베이스라 부르기도 한다.
이렇게 부르는 경우는 서비스의 운영에 필요한 데이터를 저장하는 용도로 쓰일 때다.
서비스에 쓰이는 만큼 빠른 처리 속도가 중요하다.
OLTP(OnLine Transaction Processing)이라고도 불린다.

데이터 웨어하우스 (RDB)

비즈니스 관련 데이터를 저장하고 분석해서 의사결정과 서비스 최적화에 사용한다.
처리속도 보단 구조화된 큰 데이터를 잘 처리하는 것이 더 중요하다.
OLAP(Online Analytical Processing)이라고도 불린다.

서비스에서 프로덕션 RDB와 데이터 웨어하우스가 일하는 과정

  1. 사용자들에게 서비스를 제공하기 위해 프로덕션 RDB가 사용된다.
  2. 프로덕션 RDB에 있는 비즈니스 관련 데이터를 데이터 웨어하우스에 저장한다.
  3. 데이터 웨어하우스의 데이터를 분석한다.
  4. 분석한 결과를 통해 서비스 개선을 한다.
  5. 개선한 결과를 프로덕션 RDB에 적용한다.

NoSQL

비구조화 DB라 불리기도 하는데, 프로덕션 RDB를 보완하기 위한 용도로 많이 쓰인다.
Key/Value Storage, Document Store, Wide Column Storage, Search Engine이 있다.

백엔드 시스템 구성

직군 구별

웹/앱 서비스를 보면 크게 프론트 엔드와 백엔드를 나눈다.
그리고 세부적으로 보면 풀스택, 데브옵스, 데이터 직군으로도 나뉠 수 있다.
규모가 작고 빠르게 서비스를 내놓아야 하는 특성을 가진 곳은 둘 다 할 수 있는 풀스택을 선호한다.
백엔드 서비스를 집중적으로 운영하는 직무를 데브옵스라 한다.
또 한, 데이터 엔지니어, 데이터 분석가, 데이터 과학자와 같은 데이터 직군도 있다.

Spring Boot 구성

Presentaiton Layer <-> Business Layer <-> Persistence Layer <-> Database Layer

DB는 어디든 존재한다

어떤 구성이든 DB는 존재한다.
백엔드 개발자로써 중요한건 데이터 모델을 잘 만드는 것이고 프론트 개발자와 협업을 해야 한다.
또 한, 모니터링을 하고 이슈 발생 시 쿼리 튜닝을 통해 해결할 수 있어야 한다.
(DBA가 존재하는 경우엔 하지 않을 가능성이 높다.)

RDB

용어들

DB(or Schema) > 테이블 > 컬럼(열), 레코드(행)
SQL > DDL > DML
RDB > OLTP, OLAP
테이블 > 스키마, 레코드

Start schema

보통 프로덕션 RDB에서 사용하는 형태로 데이터를 논리적 단위(예: 매장, 기간, 제품)로 나눠서 저장하고 필요시 조인하여 사용한다.

조인하였기 때문에 업데이트가 쉽고 스토리지 낭비가 덜하다.
하지만, 데이터를 조회할 때 조인한 것을 다 확인해야 해서 속도가 느리다.

profile
이타적인 기회주의자

0개의 댓글