구조 패턴
·
OOP/GoF
Adapter 패턴더보기호환되지 않는 인터페이스를 가진 객체들을 연결할 수 있게 해주는 패턴한 객체의 인터페이스를 클라이언트가 기대하는 인터페이스로 변환해주는 역할해준다.즉 인터페이스가 맞지 않는 객체들을 연결해주는 중간 변환기ex)🧩 기존 시스템과 새 시스템의 인터페이스가 다를 때예: 레거시 시스템 ↔ 최신 모듈🔄 외부 라이브러리와 내 코드가 안 맞을 때인터페이스 이름, 메서드 시그니처가 다를 때♻️ 기존 코드를 바꾸지 않고 재사용하고 싶을 때인터페이스만 바꾸고 내부는 그대로 둠상속을 사용하는 방법과 위임을 사용하는 방법이렇게 2개가 있다. //클라이언트가 기대하는 인터페이스 (Target)interface MediaPlayer { void play(String fileName);}//기존 시..
행동 패턴
·
OOP/GoF
Strategy 패턴더보기전략을 객체로 캡슐화해서 실행 중에 갈아 끼울 수 있게 한다.// 전략 인터페이스interface FlyBehavior { void fly();}// 구체 전략들class FlyWithWings implements FlyBehavior { public void fly() { System.out.println("날개로 납니다!"); }}class FlyNoWay implements FlyBehavior { public void fly() { System.out.println("저는 못 날아요."); }}// Context 클래스class Duck { private FlyBehavior flyBehavior; public Du..
생성 패턴
·
OOP/GoF
Singleton 패턴더보기전역에서 하나만 존재하는 객체를 만들고, 모두가 공유하게 하는 패턴 ex)🧠 하나의 공유 인스턴스가 필요한 경우설정 관리자, 로거, DB 커넥션 풀 등🔒 동기화된 단일 접근점이 필요할 때예: 리소스 초기화, 상태 저장📦 전역 상태를 저장하고 싶을 때캐시, 환경 설정, 앱 전역 플래그 등public class Singleton { private static Singleton instance; private Singleton() {} // 외부에서 생성 못하게 private 생성자 public static synchronized Singleton getInstance() { if (instance == null) { instan..
데브코스 데이터 엔지니어링 WEEK10 WIL(3)
·
Data Engineer/데브코스
Airflow.cfg더보기1) DAGs 폴더는 어디에 지정되는가?기본적으로 Airflow가 설치된 디렉토리 밑의 dags라는 이름의 subfolder로 구현된다. 위츠는 고정된것은 아니고 airflow.cfg에 있는 dags_folder라는 키에 지정할 수 있다.2) DAGs 폴더에 새로운 Dag를 추가하면 언제 실제로 Airflow 시스템에서 이를 알게 되고 스캔 주기는 어느 키에서 결정되는가?기본값은 300초=5분, dag_dir_list_interval이라는 키에 의해서 3) 이 파일에서 Airflow를 API 형태로 외부에서 조작하고 싶다면 어느 섹션을 변경?Airflow는 꼭 웹 UI, Command  Line에서만 제어할 수 있는 것은 아니다. cfg의 특정 section의 configurat..
데브코스 데이터 엔지니어링 WEEK11 WIL(1)
·
Data Engineer/데브코스
Docker란? 왜 필요한가?Airflow운영상의 어려움 (다수의 서버로 운영되는 소프트웨어)만약 DAG의 수가 100개를 넘어간다면? 1) 라이브러리 충돌더보기파이썬 라이브러리 충돌?파이썬 여러 버전 설치되었을 때 import 에러가 날 수 있다. 라이브러리는 누군가 미리 만들어 놓은 파이썬 코드내부 라이브러리는 파이썬 설치 시 같이 설치되는 라이브러리외부 라이브러리는 따로 직접 설치해서 사용해야하는 라이브러리 ex)selenium, requests, pandas 이런 외부 라이브러리는 pip라는 파이썬 라이브러리를 관리해주는 프로그램을 이용한다. 만약 python 3.10.6에서 pip install selenium 하면 잘 설치된다. 하지만 python 3.11.3에서 from selenium i..
데브코스 데이터 엔지니어링 WEEK10 WIL(2)
·
Data Engineer/데브코스
Python ETL 개선하기def transform(text): lines = text.strip().split("\n")[1:] # 첫 번째 라인을 제외하고 처리 records = [] for l in lines: (name, gender) = l.split(",") # l = "Keeyong,M" -> [ 'keeyong', 'M' ] records.append([name, gender]) return records def load(records): """ records = [ [ "Keeyong", "M" ], [ "Claire", "F" ], ... ] """ schema = "keeyong" ..
데브코스 데이터 엔지니어링 WEEK10 WIL(1)
·
Data Engineer/데브코스
데이터 파이프라인(ETL, ELT)테이터파이프라인 관리 프레임워크인 AirflowETL: 외부 데이터 소스를 가져와 데이터 웨어하우스에 저장하는 과정 Airflow: 이러한 ETL을 주기적으로 실행해주거나 ETL들간의 실행순서를 정해주는 FrameworkDatasource (데이터 소스): 프로덕션 DB, 이메일, 카드 거래 데이터처럼 실제 서비스에서 수집한 원본 데이터ELT (추출, 적재, 변환): 웨어하우스에 저장된 데이터를 바탕으로 분석/모델링을 위해 정제된 새로운 데이터를 생성이를 통해 대시보드를 만들거나 데이터 분석에 활용 (CTAS or DBT라는 툴을 사용  ETL,ELT=DataPipeline=Data Workflow=DAG(Airflow에서) DAG (Directed Acyclic Gra..
데브코스 데이터 엔지니어링 WEEK8 WIL(2)
·
Data Engineer/데브코스
다양한 시각화 툴 (대시보드)중요한 지표인 KPI를 설정하고 지표를 데이터 기반으로 분석하고 시각화하여누구나 쉽게 확인할 수 있도록 돕는 대시보드와 BI 툴백엔드의 데이터 웨어하우스(Data Warehouse)와 연결되어, 거기에 저장된 데이터로 시각화한다.  ETL 프로세스를 통해 전송된 ROW 데이터를 그대로 사용하는 것이 아니라, 데이터 분석가들이 정제하여 이해하기 쉬운 ELT summary table을 기반으로 대시보드에 사용. 데이터 품질을 관리하여 의미 있는 지표를 만드는 것이 매우 중요하다.  대시보드 옵션 Excel, Google Spreadsheet: 가장 기본적인 시각화 도구Python : 조금 더 프로그래밍적으로 접근 EDA대시보드 툴: Looker, Tableau, Power BI,..
데브코스 데이터 엔지니어링 WEEK8 WIL(1)
·
Data Engineer/데브코스
데이터 팀데이터 조직은 직접적인 매출 기여가 아닌 부가 가치를 창출 1) 의사 결정에 데이터를 활용( Decision Science )데이터의 역할: 과거 기록을 기반으로 최적화 및 혁신을 위한 데이터 기반 의사 결정을 필요로 함.KPI 정의 및 시각화:- 회사의 KPI를 데이터 기반으로 정의.- 대시보드를 통해 의사결정권자가 쉽게 판단할 수 있도록 지원. 2) 고품질 데이터 기반 서비스 개선 (Product Science)목표: 사용자 서비스 경험 개선 및 프로세스 최적화를 통해 비용 절감.ex) Customer Support팀의 채팅을 챗봇으로 대체하던가 Agent들이 정보를 더 잘 찾을 수 있도록 QA interface를 제공 등->앞의 Decision Science가 tracking하던 KPI를 ..
데브코스 데이터 엔지니어링 WEEK6 WIL(2)
·
Data Engineer/데브코스
예제 테이블 소개더보기쿠키 vs 세션 vs 토큰 (JWT)  -> Auth 구현하기 위해..  쿠키= 그냥 옮기는 매개체토큰= 서버에게 보여줘야하며, 서버가 기억하는 무지 긴 string (신분증처럼)JWT= 정보를 갖고있는 토큰. DB없이 검증할 수 있음  서버는 response에 쿠키를 넣어 보낼 수 있다. 내 브라우저 해당 쿠키를 저장하고 해당 웹사이터 갈때마다 보낸다.쿠키는 도메인에 따라 제한되고  서버가 정한 기간이 지나면 사라진다. 쿠키에는 인증 뿐 아니라 언어설정 바꾼거 기억할 수 도 있음 HTTP 프로토콜은 stateless하다. 서버로 가는 모든 요청이 이전 request와 독립적으로 다뤄진다. 요청이 끝나면 서버는 누군지 잊어버리기 때문에 요청할 때마다 우리가 누군지 알려줘야한다.이를 ..