데이터 전처리: 데이터 수집 기법

ㅁ 데이터 수집 기법

ㅇ 정의:
데이터 분석이나 머신러닝 모델 학습을 위해 다양한 출처에서 데이터를 획득하는 방법과 절차를 의미함.

ㅇ 특징:
– 웹, API, DB, 스트리밍 등 다양한 소스에서 수집 가능
– 데이터 품질과 형식이 제각각이므로 후속 전처리 필요
– 자동화 도구와 스크립트를 통한 반복 수집 가능

ㅇ 적합한 경우:
– 분석 목적에 맞는 데이터가 여러 출처에 분산되어 있는 경우
– 실시간 또는 주기적 데이터 갱신이 필요한 경우

ㅇ 시험 함정:
– 데이터 수집과 데이터 크롤링, 스크래핑 개념 혼동
– API 호출과 DB 쿼리 방식의 차이점 혼동

ㅇ 시험 대비 “패턴 보기” 예시:
O: “데이터 수집 기법에는 웹 스크래핑, API 호출, DB 연결, 스트리밍 수집 등이 있다.”
X: “데이터 수집은 항상 수동으로만 가능하다.”

================================

1. 웹 스크래핑 도구(BeautifulSoup, Scrapy)

ㅇ 정의:
웹 페이지의 HTML 구조를 분석하여 원하는 데이터를 추출하는 자동화 기법 및 이를 지원하는 라이브러리/프레임워크.

ㅇ 특징:
– BeautifulSoup: 파이썬 기반, HTML/XML 파싱에 강점, 간단한 구조
– Scrapy: 대규모 크롤링과 스크래핑에 적합, 비동기 처리 지원
– HTML DOM 구조 이해 필요

ㅇ 적합한 경우:
– API가 제공되지 않는 웹사이트에서 데이터 수집이 필요한 경우
– 정적 HTML 페이지에서 데이터 추출

ㅇ 시험 함정:
– 크롤링과 스크래핑 구분 혼동 (크롤링은 페이지 탐색, 스크래핑은 데이터 추출)
– robots.txt 규약 무시 가능 여부 혼동

ㅇ 시험 대비 “패턴 보기” 예시:
O: “BeautifulSoup은 HTML 파싱에 유용하다.”
X: “Scrapy는 동기 방식만 지원한다.”

================================

2. API 인증(OAuth2, JWT)

ㅇ 정의:
API를 통해 데이터에 접근할 때 사용자 또는 애플리케이션의 권한을 검증하는 절차와 기술.

ㅇ 특징:
– OAuth2: 토큰 기반 인증, 권한 위임 가능, 소셜 로그인 등에 활용
– JWT: JSON 포맷의 토큰, 자체 서명으로 무결성 검증 가능
– HTTPS와 함께 사용하여 보안 강화

ㅇ 적합한 경우:
– 외부 서비스 API 연동 시 보안이 필요한 경우
– 무상태(stateless) 인증이 필요한 경우

ㅇ 시험 함정:
– OAuth2 흐름(Authorization Code, Implicit 등) 혼동
– JWT는 암호화를 기본 제공한다고 오해

ㅇ 시험 대비 “패턴 보기” 예시:
O: “OAuth2는 권한 위임을 지원한다.”
X: “JWT는 항상 암호화되어 전송된다.”

================================

3. DB 연결(ODBC, JDBC)

ㅇ 정의:
응용 프로그램이 데이터베이스에 접속하여 데이터를 조회·조작할 수 있도록 하는 표준 인터페이스.

ㅇ 특징:
– ODBC: 운영체제 독립적, C언어 기반, 다양한 DB 지원
– JDBC: 자바 전용, SQL 실행 및 결과 처리 지원
– 드라이버 설치 필요

ㅇ 적합한 경우:
– 애플리케이션에서 다양한 DBMS에 접근해야 하는 경우
– 표준화된 방식으로 SQL 실행이 필요한 경우

ㅇ 시험 함정:
– ODBC와 JDBC의 언어 종속성 차이 혼동
– DB 연결과 ORM(Object Relational Mapping) 혼동

ㅇ 시험 대비 “패턴 보기” 예시:
O: “JDBC는 자바 프로그램에서 DB에 접근하는 표준이다.”
X: “ODBC는 자바 전용이다.”

================================

4. 데이터 스트리밍(Kafka, Flink)

ㅇ 정의:
실시간으로 발생하는 데이터 흐름을 지속적으로 처리·전달하는 기술과 플랫폼.

ㅇ 특징:
– Kafka: 분산 메시징 시스템, 높은 처리량, 내구성
– Flink: 실시간 스트림 처리 엔진, 상태 기반 연산 지원
– 대용량, 저지연 처리 가능

ㅇ 적합한 경우:
– 실시간 데이터 분석 및 모니터링
– 이벤트 기반 애플리케이션

ㅇ 시험 함정:
– 스트리밍과 배치 처리의 차이 혼동
– Kafka와 Flink의 역할 혼동 (Kafka는 메시징, Flink는 처리)

ㅇ 시험 대비 “패턴 보기” 예시:
O: “Flink는 실시간 데이터 처리에 적합하다.”
X: “Kafka는 데이터 처리를 담당한다.”

ㅁ 추가 학습 내용

학습 정리

1. 동적 페이지 웹 스크래핑
– 자바스크립트 렌더링이 필요한 페이지는 단순 HTTP 요청으로는 데이터 수집이 어려움
– Selenium, Puppeteer 등 브라우저 자동화 도구를 사용하여 실제 브라우저 환경에서 DOM이 완전히 로드된 후 데이터 추출 가능
– Selenium: 다양한 브라우저 지원, 테스트 자동화에도 활용
– Puppeteer: 크롬/크로미움 기반, 빠른 실행과 헤드리스 모드 지원

2. OAuth2 Grant Type
– Authorization Code: 서버 간 보안 높은 방식, 주로 웹 애플리케이션에서 사용
– Client Credentials: 서버 간 통신, 사용자 개입 없이 클라이언트 인증
– Resource Owner Password Credentials: 사용자가 직접 아이디/비밀번호 제공, 보안 취약 가능성
– Implicit: 브라우저 기반 앱에서 사용, 토큰이 URL에 노출되므로 보안 취약

3. JWT (JSON Web Token)
– 구조: Header.Payload.Signature
– Header: 토큰 타입과 서명 알고리즘
– Payload: 클레임(Claims) 정보
– Signature: Header와 Payload를 Base64URL 인코딩 후 비밀키로 서명
– Base64URL 인코딩: URL 안전하게 변환, ‘+’ ‘/’ ‘=’ 문자를 대체 또는 제거
– 서명 검증: 토큰 변조 여부 확인, 발급자와 수신자 간 신뢰 보장

4. DB 연결 관리
– Connection Pool: 미리 일정 수의 DB 연결을 생성해 재사용, 연결 생성/해제 비용 절감
– 성능 최적화: 풀 크기 조정, 유휴 연결 관리, 타임아웃 설정
– 트랜잭션 관리: 데이터 일관성과 무결성 보장, Commit/Rollback 활용

5. 데이터 스트리밍 핵심 개념
– Exactly-once 처리: 중복 없이 데이터 정확히 한 번만 처리
– 윈도우 연산(Windowing): 시간 또는 이벤트 기반으로 데이터 묶어 처리
– 상태 관리(State Management): 스트림 처리 중간 상태를 저장/복원하여 연속성 유지

시험 대비 체크리스트

[ ] Selenium과 Puppeteer의 특징과 차이 설명 가능
[ ] OAuth2의 4가지 Grant Type과 각 사용 시나리오 구분 가능
[ ] JWT의 구조와 각 부분의 역할 설명 가능
[ ] Base64URL 인코딩의 특징과 필요성 이해
[ ] JWT 서명 검증 과정 순서대로 설명 가능
[ ] Connection Pool의 개념과 장점 설명 가능
[ ] DB 성능 최적화 방법과 트랜잭션 관리 중요성 숙지
[ ] Exactly-once 처리 보장의 의미와 구현 방법 이해
[ ] 윈도우 연산(Windowing) 종류와 활용 사례 설명 가능
[ ] 상태 관리(State Management)의 필요성과 구현 방식 이해

답글 남기기

Your email address will not be published. Required fields are marked *.

*
*