220408 데이터 파이프라인 스터디 1일차

Data Pipeline

이번 포스팅에서는 1일차에 학습했던 데이터 파이프라인과 관련된 학습내용을 정리하면서 간단하게 회고 내용을 작성해보려고 한다.

1일차 학습했던 학습내용을 개괄적으로 정리하자면, 우선 데이터 파이프라인의 흐름을 각 STEP별로 나눠서 이해하고, 데이터 파이프라인에 필요한 AWS서비스에 대해서 이해 그리고 데이터 파이프라인 구성시에 고려해야될 고려사항에 대해서 학습했다.

학습을 하면서, 모르는 용어가 많이 나왔기 때문에 실제 실무에서 일을 할때 같은 엔지니어들과 소통을 하기 위해서는 이 용어가 매우 중요하기 때문에 용어 공부를 위해 별도의 포스팅에 모르는 용어가 나올때마다 추가를 해가면서 학습을 이어가고 있다.

1일차 학습하면서 느낀점은 생각보다 어렵지만, 이전에 파이프라인이라는 말만 듣고 “뭐지?” 했을때의 막연함은 많이 사라진 것 같아서 기분은 좋다. 무언가 새로운 기술을 배울때 마냥 쉽기만 하면, 다른 사람들에게도 진입장벽이 낮다는 것을 의미하는 것이기 때문에 경쟁력을 갖추기 위해서는 어려운 기술적인 부분도 커버할 수 있는 엔지니어가 되려면 열심히 배워야겠다고 느꼈다.

아무튼 각설하고, 이전에 데이터 엔지니어 채용공고를 많이 찾아보았는데, 공고에서 AWS 클라우드 환경에서의 개발/운영 경험에 대한 요구사항이 많았다. 왜 인가 생각을 하면서 학습을 해보았는데 이 궁금증이 해결이 되었다.
간단히 말하면, 온프레미스(On-premise)방식과 클라우드 환경(Off-premise)에서의 데이터 처리가 차이가 있는데, 요구사항이 많다는 것은 온프레미스 방식보다는 클라우드 환경에서의 데이터 처리가 훨씬 더 효율적이고 좋다는 것을 의미한다. 어떤 부분이 좋은지에 대해서는 자세히 포스팅의 내용에서 다뤄보도록 하겠다.

Read More

220408 데이터 파이프라인의 구축 - 2

데이터 파이프라인(Data Pipeline)

(1) 데이터 파이프라인 구성방안

요즘은 사내에서 데이터 파이프라인을 구성을 한다. 큰 회사는 플랫폼이라고 하며, 기본 아키텍처의 구성을 어떻게 해야되는지에 대한 고려가 필요하다.

(1) 회사내의 데이터적 요구사항(User Case)에 대한 빠른 대응

초기에는 데이터로 요구사항을 해결하는 기간적 사이클이 컸다.
하지만 요즘에는 데이터의 중요성이 커지고 있으며, 요구사항도 많이지기 때문에, 그 날 요청한 것이 그 날의 데이터 중에서 해결할 수 있는 것이면, 그 날 대응해주는 것이 좋다. (1-2일 이내에 대응)

(2) 지속적이고 에러가 없어야 한다.

데이터 중심의 회사라면 아침에 데이터를 중심으로 회의가 진행하는 경우가 있기 때문에 기본적으로 데이터를 처리해주는 데이터 파이프라인에 에러가 없어야 한다.

(3) 시스템적으로 발생하는 문제에 대해서 유연한 Scability가 있어야 한다.

(4) Sclae up과 Scale Out이 자유로워야 한다.

(5) 이벤트성 데이터 부하에도 문제없이 처리가 가능해야 한다.

마케팅 이벤트, 푸시 발송, 서비스 오픈 데이터에서 이슈가 가장 많이 발생한다. 푸시 발송은 일괄적으로 발송이 되기 때문에, 복합적으로 다양한 이벤트들이 발생할 때 부하이슈가 발생하여, 수집하는 데이터에서 이슈가 발생하는 경우가 생긴다. 따라서 수집하는 서버에서의 문제에 문제가 없도록 해야하며, 부하처리를 쉽게 핸들링할 수 있도록 해야한다.

Read More

220408 데이터 파이프라인 학습 용어 정리

데이터 파이프라인 학습 용어 정리

이번 포스팅에서는 데이터 파이프라인을 공부하면서 나왔던 용어에 대해서 정리를 하고자 한다. 이 포스팅에 학습을 하면서 몰랐던 용어에 대해서 정리를 해두려고 한다.

온프레미스(On-premise)?

온프레미스는 기업의 서버를 클라우드 같은 원격 환경에서 운영하지 않고, 자체적으로 보유한 전산실 서버에 직접 설치해 운영하는 방식을 의미한다.
온프레미스는 클라우드 컴퓨팅 기술이 나오기 전까지 기업 인프라 구축의 일반적인 방식이었다.

장점으로는 기업의 비즈니스 정보를 보안성 높게 관리할 수 있다는 것이 있으며, 단점으로는 시스템 구축에 있어 많은 시간이 걸리고, 비용이 많이 들어간다는 것이다.

따라서 기업에서 보안성이 높은 데이터는 온프레미스 환경에서 관리하고, 보안성이 낮은 데이터는 클라우드 환경을 사용하는, 복합적인 하이브리드 IT인프라 형태로 관리가 되기도 한다.

cf) 클라우드 방식의 서비스를 오프 프레미스(Off-premise)라 한다.

Adhoc하게 데이터를 분석한다고?

Ad-Hoc하다는 의미는 "좀 여유롭게" 혹은 "특정한 형식 없이 사용할 수 있는"이라는 의미를 갖고 있다. 예를들어 아래와 같은 쿼리문이 있다고 하면, myId는 늘 변하게 되는 변수이기 때문에 미리 정의된 쿼리문이 아닌 즉석에서 바꿔서 사용되는 쿼리인 것이다. 이러한 쿼리를 Ad-Hoc하다고 할 수 있다.

ex. var newSqlQuery = "SELECT * FROM table WHERE id =" + myId;

Scale up

서버의 메모리나 CPU, 디스크의 메모리가 부족해서 특정 JOB을 돌릴 때 죽거나 CPU가 70-80%올라갔을 때 메모리, 디스크, CPU를 올려주는 것을 말한다.

Scale out

Distribute system의 일종으로, 여러 서버 노드를 두고 필요시에 노드의 갯수를 늘려주는 것을 의미한다.
유연한 아키텍처 구성에 중요하다.

Object storage?

오브젝트 스토리지는 클라우드에서 일반적으로 사용되는, 계층이 없는 데이터 저장 방법이라고 한다.
다른 데이터 스토리지 방법과는 달리 오브젝트 기반의 스토리지는 디렉토리 트리를 사용하지 않으며, 개별 데이터 단위(object)가 스토리지 풀의 동일한 레벨에 있다.
각 오브젝트에는 애플리케이션에서 검색하는데 사용되는 고유 식별자가 있으며, 또한 각 오브젝트는 함께 검색되는 메타데이터를 포함할 수 있다.

CSP(Cloud Service Provider)?

데이터 파이프라인 강의를 듣는데, 데이터 파이프라인을 클라우드 기반의 환경에서 구축하는 수업이다보니, CSP라는 용어가 많이 나왔다.
CSP란 Cloud Service Provider의 약어로, 클라우드 서비스를 제공하는 업체, 벤더사를 의미한다.
최근 기업의 비즈니스 플랫폼이 클라우드로 옮겨가고 있고, 클라우드 서비스에는 설치 없이 웹에서 필요한 소프트웨어를 빌려쓰는 형태인 SaaS(Software as a Service), 원하는 만큼 컴퓨팅 인프라를 쓰는 IaaS(Infrastructure as a Service), 소프트웨어 서비스를 개발할 때 필요한 플랫폼을 제공하는 서비스 PaaS(Platform as a Service가 있다.

클라우드 서비스를 제공하는 대표적인 업체로 아마존(AWS), 마이크로소프트(MS Azure), IBM 그리고 Oracle이 있다.

Read More

220408 데이터 파이프라인의 구축 - 1

데이터 파이프라인(Data Pipeline)

이번 포스팅에서는 데이터 수집 -> 전처리 및 저장 -> 분석/시각화에 이르는 데이터 파이프라인의 흐름에 대해 이해하고, 각 단계에서 필요한 AWS 서비스와 각 각의 용어와 의미에 대해서 정리해보려고 한다.
(정리를 하는 이유는 반복학습을 위해서이다. 물론 한 번에 보고 이해를 하고 외워지면 좋겠지만, 그렇지 않기 때문에 정리를 하는 것이고, 시간날때마다 반복해서 보고 추가적으로 다른 제 3자에서 설명할 수 있을때까지 추가적인 노력하자)
탄탄한 이론 위에서 실습을 해야 향후에 새로운 기술들이 나왔을 때 연결고리를 만들어서 새롭게 가지치기를 하면서 학습을 이어나갈 수 있다.

데이터 엔지니어 채용관련 공고를 보았을 때 드는 생각이 AWS 클라우드 환경에서의 개발/운영 경험에 대한 요구사항이 많았다.

그렇다면, 온프레미스(On-premise)방식과 클라우드 환경에서의 데이터 처리가 차이가 있다는 것인데, 요구사항이 많다는 것은 온프레미스 방식보다는 클라우드 환경에서의 데이터 처리가 훨씬 더 효율적이고 좋다는 결론이 나온다.
앞으로 클라우드 환경에서 데이터 파이프라인을 구축했을 때의 장점에 대해서 인지하면서 실습을 해보도록 하겠다.

(1) 데이터 파이프라인의 흐름의 이해 STEP BY STEP

파이프라인은 하나의 데이터 처리 단계의 출력이 다음 단계의 입력으로 이어지는 형태로, 서로 파이프가 연결된 것과 같은 연결구조로 생각하면 된다.

Read More

220405 Hadoop과 친해지기 그 네 번째 이야기

하둡의 생태계(Hadoop Ecosystem) - External data storage part

이번 포스팅에서는 하둡의 생태계에 대한 전반적인 구성에 대해서 정리해보는 그 네번째 시간으로, Hadoop Ecosystem의 Core 영역을 지나 외부 데이터 스토리지 영역(External Data Storage)에 대해서 알아보도록 하겠다.

기존에 하고 있던 개발관련 공부의 분량이 많아서 아주 가끔씩 시간을 내서 하둡에 대해서 공부를 하고 있는데, 처음에는 너무 막막해서 어려웠지만, 지금은 그래도 어느정도 이 친구가 어떤 기술스택들의 집합체이고, 각자가 어떤 역할을 하는지에 대해서 정도만 개괄적으로 알게 된 것 같다.
그냥 새로운 사람을 만났을 때 생김새와 이름, 사는 곳 정도만 알고 있는 수준일테지만, 좀 더 깊이 있게 알아가다보면 어느 순간 정말 이 기술에 대해 어느정도 잘 알고 있다고 말 할 수 있을 날이 오지 않을까 싶다.

자 그럼 시작해보자.

[STEP 1]

사실 이전에 Core Hadoop Ecosystem 영역에 있던 HBase도 이 External Data Storage의 범주에 속하지만 하둡 스택의 일부이기 때문에 빠져있다.
위의 외부 데이터 스토리지 영역에서 볼 수 있듯이, MySQL은 물론이고 어떤 SQL 데이터베이스라도 클러스터와 통합해서 사용할 수 있다.

Read More

220402 SQL Basic-2

SQL

이번 포스팅에서는 SQL의 기초에 대한 내용을 정리하겠다.

SELECT 문의 주요 기능

  • Selection : 질의에 대해 반환하고자하는 테이블의 행을 선택하기 위한 기능
  • projection : 질의에 대해 반환하고자 하는 테이블의 열을 선택하기 위한 기능
  • Join : 공유 테이블 양쪽의 열에 대해 링크를 생성하여 다른 테이블에 저장되어있는 데이터를 결합하여 가져오기 위해 SQL의 조인 기능을 사용

SELECT 절로 할 수 있는 것들

  • 특정 열과 모든 열을 선택
  • 연산자를 사용 +, -, *, /
  • 그룹화
  • Null 값의 처리
  • 별칭 (Alias)
  • 중복 행의 제거 (Distinct) 등

SELECT 문의 기본 문법

SELECT [DISTINCT] 열 이름[as Alias]
FROM 테이블 이름
[WHERE 조건식]
[ORDER BY 열 이름 [ASC OR DESC]];

[] : 선택사항

SELECT 문장 작성 규칙

명령어는 대문자로 작성하고, 나머지는 소문자로 작성하면 가독성이 좋아진다.

Read More

220403 SQL Basic-4

SQL

이번 포스팅에서는 SQL의 기초에 대한 내용을 정리하겠다.

전체 상품의 월별 매출 추이와 스테이크의 월 별 매출 추이 확인(동등 조인, SUBSTR, DECODE 응용)

문제를 해결하기 위해서는 매 달 매출정보전체 매출과 스테이크 매출을 구분할 수 있는 별도의 조건이 필요하다.

데이터 분석을 할때에는 핵심이 되는 부분을 선정해서 그 부분부터 점점 펼쳐나가는 분석기법이 필요하다.

시계열 (Time Series)?

시간의 흐름에 따라 변화를 나타낸 그래프를 시계열 그래프라고 하는데, 시계열 그래프는 시간의 흐름을 보여주기 때문에 시계열이라고 한다.

선 그래프의 사용

선 그래프는 흐름/추이를 확인할 때 매우 유용하게 사용되는 그래프이다.
선 그래프를 그리기 위해서는 JOIN이 필요하다. 가장 중요한 개념이기 때문에 잘 알아둬야 한다.

ERD(Entity Relationship Diagram)?

ERD란 개체(테이블) 간의 관계를 이해하기 쉽게 그림으로 표현 한 것으로 데이터를 조작하고 분석하는 기초자료로 활용한다. 개체 간에는 관계(relation)이 있는데, 이러한 관계는 점선이나 실선으로 표현된 화살표 모양의 선으로 나타낸다.

(1) P (Primary Key) : 기본 키 (=주 키)라고 하며, 기본 키는 데이터를 식별하는 ‘식별자’ 역할을 한다.
(2) U (Unique Key) : 고유 키라고 하며, 행에서 유일한 값을 갖는 데이터 값으로 구성된 열 (유일하게 식별할 수 있는 열이지만, 기본 키가 아닌 값)
(3) F (Foreign Key) : 외래 키(=보조 키)라고 하며, 참조 테이블의 기본 키 또는 고유 키를 참조한다.(다른 테이블과 연결을 위한 열로, 주로 다른 테이블 간의 연결을 위해 주로 다른 테이블의 기본 키를 참조한다.)
(4) 키값이 아닌 열 : P, U, F를 제외한 나머지 열을 말한다.

ERD는 설계도로, ERD를 기반으로 SQL의 논리로직을 작성하게 된다.

Read More

220403 OpenCV를 이용한 Computer Vision w/Python

OpenCV를 이용한 Computer Vision

이번 포스팅에서는 OpenCV를 이용한 Computer Vision에 대해서 정리해보려고 한다.

실습환경 구성

다운받은 cvcourse_macos.yml 파일을 이용해서 가상황환경을 만들어, 많은 라이브러리를 다운받는다.

1
$conda env create -f cvcourse_macos.yml

구성된 환경을 활성화하기 위해서는 아래의 명령어로 활성화한다.

활성화된 뒤에는 아래의 명령어로 jupiter notebook을 실행한다.

1
$jupyter-lab
1
2
$conda activate python_cvcourse
$conda deactivate

NumPy와 Image 기본

이전 수업시간에 NumPy를 배운적이 있는데, 이때는 배열을 삭제하거나 슬라이싱, 인덱싱하는 방법에 대해서 배웠다.
그런데 넘파이로 이미지를 읽어와서 출력하는 방법도 있다고 한다.

파이썬으로 이미지를 작업할때에는 주로 배열로 나타내기 때문이다.

넘파이 -> OpenCV로 확장하면서 학습

컴퓨터는 이미지 데이터를 배열로 읽는다.

NumPy ?

컴퓨터가 이미지를 어떻게 핸들링하는가?

220403 SQL Basic

SQL

이번 포스팅에서는 SQL의 기초에 대한 내용을 정리하겠다.

비교 분석하기

SUM, COUNT, GROUP_BY를 사용하여 총 판매 금액과 총 판매 수량을 비교한다.

판매금액을 구하는 방법,
판매 수량을 구하는 방법,
메뉴 아이템 별로 나누는 방법 (그룹화)

단일행 함수와 그룹 함수

함수?

  • 함수란 어떤 결과를 위해 미리 만들어 놓은 명령어(도구)이다.
  • 함수들은 기본적인 SQL문을 더욱 강력하게 사용할 수 있게 해주며, 데이터 값을 조작하는데 도움을 준다.

SQL함수의 특징

  • 데이터 값을 계산하거나 조작한다.
  • 데이터 값을 조작, 날짜와 숫자 등 데이터 타입을 상호 변환, 행에 대해 조작한다.(단일 행 함수)
  • 행의 그룹에 대해 계산하거나 요약 (그룹함수)

(1) 단일 행 함수 : 문자 함수, 숫자 함수, 날짜 함수, 변환 함수, 일반 함수
(1:1로 값이 mapping되어 수정된다)

데이터 타입의 종류

  • 문자 : CHAR(n) : n크기만큼 고정길이의 문자 타입을 저장 (최대 2000바이트)
  • 문자 : VARCHAR2(n) : n크기만큼 가변 길이의 문자 타입을 저장한다.
    -> 데이터를 관리하고 저장하는데 효율성을 위해서 가변/불가변 데이터 타입을 구분해서 사용한다. 고정 데이터 분석(CHAR)/유연한 데이터 분석(VARCHAR2)
  • 숫자 : NUMBER(p, s) : 수자타입을 저장 (p: 정수, s: 소수 자릿수)
  • 날짜 : DATE : 날짜 타입 : 날짜 타입을 저장 9999년 12월 31일까지 저장

Read More

220404 SQL Basic-1

SQL

이번 포스팅에서는 SQL의 기본적인 부분에 대해서 정리해보려고 한다.

SQL?

SQL(Structured Query Language)의 약어로, RDBMS(관계형 데이터베이스 관리 시스템)을 접근하여 조작할 수 있으며, ANSI 표준을 따른다.

SQL로 할 수 있는 일은?

  • 데이터베이스를 질의(=조회 실행, Query)할 수 있다.
  • 행을 삽입(Insert), 갱신(Update), 삭제(Delete) 할 수 있다.
  • 데이터베이스, 테이블, 프로시져, 뷰 등을 생성(Create)할 수 있으며, 권한을 줄 수 있다.

관계형 데이터 베이스 관리 시스템(RDBMS/Relational Database Management System)?

  • RDBMS는 SQL의 기본이 되는 데이터베이스이다.
  • MY-SQL, ORACLE, DB2, MySQL 등이 대표적인 RDBMS이다.
  • RDBMS는 테이블(Table)이라고 불리는 객체를 갖는다.
  • 테이블(Table)은 행과 열로 구성이 되어있다.

관계형 데이터베이스의 구조

관계형 데이터베이스는 2차원의 테이블관계를 이용한다.

Read More