카일 스쿨 5회차
¶
#0. 연말정산
#1. 클라우드란?
#2. 데이터 엔지니어링 퀵 요약
연말 정산
¶
연말 정산이 끝났지만, 내년을 위해 한번 정리해보는 시간을 가지려고 함
신입/인턴 관점에서 챙길 내용 위주로!
늦어도 지금 시작하면 내년에 효과를 볼 수 있음!
연말 정산의 원리
연말에 하는 정산
국가의 정책 사업을 위해 세금을 냄
회사가 월급을 줄 때 세금을 미리 떼고 줌!
월급에서 4대 보험, 소득세 빼서 나머지 금액을 줌
매달 우리는 세금을 내고 있다
연말이 되서 확인하니, "너 세금 더 냄. 돈 더 줄게" or "너 세금 덜 냄. 더 내" 이러는 과정
연말정산 시기
1~2월에 진행. 회사마다 기간은 다름
솔루션이 있는 회사에 외주할 경우 => 홈택스에서 받은 PDF를 업로드하면 끝
직접 연말정산 서류를 작성할 경우 => 직접 작성
국가에서 세금 매기는 1단계 : 내가 번 돈 만큼 매달 소득세가 정해짐
국가에서 세금 매기는 2단계 : 국가 정책 사업에 기여한 것이 있으면 세금을 깎아줌(소득공제 또는 세액공제)
결정세액 : 1, 2단계를 고려해 결정된 세금
기납부세액 : 회사가 이미 납부해준 세금
결정세액 - 기납부세액을 통해 결정됨
소득공제와 세액공제
소득공제
세금 부과 대상이 되는 소득을 줄여주는 것(간접)
소득 규모가 크면 높은 세율을 적용받아 과세표준이 줄,어 세율이 낮은 저소득자보다 소득세 절감액이 많아짐
예시 : 인적공제, 특별소득공제(보험료, 주택자금공제), 조특법상 소득공제(신용카드 등 사용금액, 소기업/소상공인 공제부금 등) 등
세액공제
결정된 세금에서 깎아주는 것(직접)
세금 80만원을 내야 하는데, 세액공제 30만원 받으면 50만원만
예시 : 중소기업 소득세 감면, 월세 세액공제
소득이 많으면 소득공제가 유리하고, 일반 근로자면 보통 세액공제가 더 이득
(참고) 5월 종합소득세 신고
종합소득의 구성
근로소득, 사업소득, 이자소득, 배당소득, 기타소득, 연금소득 등
프리랜서거나 기타 소득이 있는 경우
알바, 심지어 대학원생도 5월 종합소득세 신고에서 세금을 다시 받을 수 있음(연구비 인건비)
처음에 챙기면 좋은 항목들 - 소득공제
2020년 1월 기준이고, 계속 정책이 바뀌니 유심히 찾아보기(보통 회사에서 작년이랑 변경된 것 같이 보내줌)
주택마련저축 소득공제(청약)
무주택이고 세대주일 경우
총급여 7000만원 이하
불입액의 40% 공제
최대 240만원 한도 => 최대 공제 96만원
최초에 자동 반영안되니 꼭 직접
주택임차차입금 원리금상환액 소득공제
전세자금을 차입한 경우, 원리금 상환액의 40% 공제
카드를 많이 써서 절세받는게 나을까? 고민해보기. 소비를 절제하고 내 돈에서 쓰는 습관이 더 좋을수도 있음
현금영수증은 핸드폰번호 국세청 홈택스에 꼭 신청하기!(최초라면 더 신경)
처음에 챙기면 좋은 항목들 - 세액공제
2020년 1월 기준이고, 계속 정책이 바뀌니 유심히 찾아보기(보통 회사에서 작년이랑 변경된 것 같이 보내줌)
중소기업 소득세 감면 90%, 1년에 최대 150만원. 5년
월세
1년 총 급여 5500만원 이하 => 월세 12% 공제
1년 총 급여 5500만원 ~ 7000만원 => 월세 10% 공제
전용면적 85m(25.7평) 이하 or 기준시가 3억원 이하 주택 거주
계약서와 주민등록등본 주소지 일치해야 하고, 전입신고 필수
연간 최대 750만원
의료비 중 렌즈/안경 구입비
총 급여에서 3% 초과해서 지출해야 함
시력 교정용(도수가 있어야 함)이어야 함
1인 50만원 한도
IRP
개인형 퇴직연금
연소득 5500만원 이하 => 16.5%
연소득 5500만원 초과 => 13.2%
최대 연 700만원
단, 요즘같은 경제 상황에 미래 퇴직 연금이 가치가 있을지? 고민해볼 필요가 있음
보험료도 납임액의 12% 세액공제
기부금 15% 세액공제
원천징수세액
월급에서 세금을 얼마나 뗄건지?
80 100 120
120으로 하면 소비가 줄어들고 연말정산때 안뱉을 수 있지 않나? 싶었음
다른 의견 : 80으로 하고 남은 돈을 차라리 활용해라. 120으로 하면 무이자로 국가에게 빌려주는 격
결국 자신의 선택
정리
¶
클라우드
¶
클라우드가 왜 필요한가?
우리가 사업을 한다고 합시다
개인 웹을 만들려고 함
내 컴퓨터에서 작업을 하면?
내 컴퓨터는 항상 끌 수 없음. 메인 컴퓨터가 꺼지면 Request도 못받기 때문
그럼 어떻게 할까?
물리적 공간과 확장성을 고려해서 서버실을 만듬(IDC, Internet Data Center)
컴퓨터 자원을 넣을 공간 + 추후 자원을 추가할 때 즉각적인 확장할 수 있는 규모인지
에어컨 등등
예전에 이런 명목에서 서버실이 있었음
서버실을 운영하는 것보다, 그냥 가져다 쓰는 개념으로 클라우드가 시작했고, 점점 더 성장
개발자들이 모두 해야하는 작업(예 : Docker로 이미지 생성하고, 그 이미지로 컴퓨터를 띄우고, IP 지정하고, 네트워크 설정하고 등등...)
이것도 클라우드에서 해줌 => 개발자의 퍼포먼스 개선
종류
IaaS : Infrastructure as a Service, 인프라 자원 서비스
PaaS : Platform as a Service, 개발에 필요한 환경 서비스
SaaS : Software as a Service, 사용자가 원하는 소프트웨어 서비스
이미지 출처 :
https://rubygarage.org/blog/iaas-vs-paas-vs-saas
클라우드 회사
대표적으로 AWS(Amazon), Azure(Microsoft), GCP(Google), Alibaba Cloud, Naver Cloud 등
이 클라우드의 차이는?
벤더사가 어디냐, 제품의 차이, 어떤 것에 중점을 두느냐 등이 있음
시장 점유율 1위 AWS, 2위 Azure, 3위 GCP라고 함
처음 접할땐 GCP 추천. 크레딧 300달러를 줌(왠만한거 테스트 가능)
제품군
클라우드가 처음이면 자세히 익히는 것보다 큰 그림부터 가져가는 것 추천
클라우드마다 비슷한 제품이 있음
이거만 먼저 알고 가세요
컴퓨팅 리소스 : EC2, Compute Engine
Object Storage(저장소) : S3, Cloud Storage
RDB
데이터 웨어하우스 : BigQuery
GCP에만 존재하는 것 : Composer(Airflow), TPU
각 클라우드마다 장단이 있음
AWS : 인프라 전반 우수, 강화학습쪽 딥레이서 개발
GCP : 머신러닝 AI Platform, 데이터 전처리, Auto ML, TPU 등
클라우드를 어떻게 활용하는가?
개발 프로세스에선 Local에서 개발하고, Staging(혹은 Alpha) 서버 / Production 서버로 배포 과정을 거침
배포 : 코드를 최신화하고, 필요시 프로그램을 재기동하고 등등
서버에서 로그를 남길 경우, DB에 데이터가 있기도 하고 + 로그 데이터는 Object Storage에 저장하곤 함
데이터쪽은 RDB 또는 데이터 웨어하우스 주로 사용
Jupyter notebook 환경 만들 때 주로 사용
우리가 클라우드를 바라볼 관점
컴퓨터를 빌리고, 머신러닝/딥러닝 모델 학습하고, 데이터는 데이터 웨어하우스에서 추출
데이터 웨어하우스(BigQuery)를 사용한 전처리
클라우드가 발전해서 점점 데이터 엔지니어링이 쉬워짐
구글 클라우드 UI로 Go!
어떻게 공부해야 좋을까?
필요한 것을 만들어보기(간단한 웹, 크롤러, 자신의 업무 자동화 등)
개인 프로젝트로 하고 괜찮다면 회사에 적용
인스타그램 자동 좋아요 코드 짜고 클라우드에 배포해서 주기적으로 매일 10시 실행
저는 매달 5만원씩 적금처럼 돈 모아서, 그 돈으로 GCP 사용 중
AWS는 Ebay에서 "aws credit code" 검색해보시면...
GPU를 많이 사용한다면 그래픽카드를 맞추는 것도 좋고, 많이 안쓰면 클라우드도 좋음
백번 책 읽는것보다, 직접 하는게 좋음
Jupyter Notebook 작업 환경 만들기
하면서 Docker, Shell 등에 대해 필요성을 느낌
현재 회사에선 어떤 것을 사용하고 있을까? 생각해보고 필요시 생성(단, 데이터 엔지니어링 협조 필수)
데이터 엔지니어링
¶
데이터 엔지니어링이란?
데이터 엔지니어링은 앱 또는 웹에서 발생하는 데이터들을 파이프라인을 만들어 저장하는 일을 주로 함
즉, 우리가 보고 있는 데이터를 적재해주는 일
데이터 처리를 어떻게 시스템화하는가?
그 외
데이터 분석가들이 더 잘 일할 수 있도록 도와주시고 계심
실시간 API 개발 등
데이터 웨어하우스, 데이터 마트, 데이터 레이크 용어 정리
¶
데이터 웨어하우스
일반 RDB와 달리 대량의 데이터를 장기 보존
RDB나 로그 저장하는 곳을 데이터 소스(Data source)라 부름
Raw 데이터를 추출해 데이터 웨어하우스에 넣는 것이 ETL 프로세스
데이터 마트
데이터 웨어하우스에서 필요한 데이터만 추출해 구축
BI 도구와 조합시키는 형태로 주로 사용됨
데이터 레이크
모든 데이터가 데이터 웨어하우스를 가정해서 만들어지지 않음
따라서 모든 데이터를 원래 형태로 저장하고, 나중에 필요에 따라 가공하는 구조가 필요 => 데이터 레이크
예를 들어 다른 업체에서 받은 텍스트 파일은 데이터 웨어하우스에 넣을 수 없음
보험사에서 엑셀로 들어오는 데이터(매번 형식이 바뀐다면?)
데이터 레이크 중심으로 하는 파이프라인과 데이터 웨어하우스를 기반으로 하는 파이프라인 등이 있음
왜 알아야 해요?
데이터 엔지니어링팀과 협업
가능하면 데이터 전처리부터 모델링까지 직접 모두 처리하는 것도 매력적
클라우드의 발전으로 점점 엔지니어링이 쉬워지고 있음
점점 하이브리드로 데이터 엔지니어링 능력이 있는 사람이 각광받을 것으로 예상
알아두면 좋은 지식
Batch(배치)와 Real Time의 차이
배치성 : 1시간(혹은 30분)마다 작업
Real Time은 실시간으로 바로 데이터 적재. 실시간은 네트워크나 데이터 보존 등이 필요해 난이도가 높은 편
ETL
Extract : 데이터 소스에서 데이터를 추출하고
Transform : 원하는 형태로 변환하고
Load : 저장
정형 데이터와 비정형 데이터
정형 : Tabular Data
비정형 : 이미지, 텍스트, 음성 등
DB 스키마는 자주 변경될 수 있음
새로운 기능이 추가되면 새로운 스키마가 추가됨
이런 것에 대응하기 위해 NoSQL를 사용하기도 함
데이터 엔지니어링을 어렵다고 생각하지 말고, 블럭 쌓기와 비슷다고 생각하면 됨
꼭 스파크를 하지 않아도 됨
분산처리는 매우 어려운 부분
파이프라인
핵심
최초에 데이터가 "어디에" 저장되는가?
최초에 데이터가 "어떤 형태로" 저장되는가?
최종적으로 데이터를 "어디에" 저장할 것인가?
최종적으로 데이터를 "어떤 형태로" 저장할 것인가?
간단하게 Raw level 아이디어 생각해보기
매일 1시간마다 서버에서 S3에 데이터를 저장한다(json으로)
json은 계속 덮어쓰기된다
로그 샘플
간단한 접근
1시간마다 json을 BigQuery에 적재한다
정규표현식 등으로 필요한 데이터만 추출
crontab에 1시간 간격으로 실행되도록 설정한다
crontab에서 1가지 작업만 하면 큰 이슈는 없음
그러나 A Table을 저장하고, B Table은 A Table을 가공한 결과라면?
A가 제대로 적재되지 않으면, B Table이 연산을 시도해도 올바른 결과가 생기지 않음
일종의 Dependency가 있는격
crontab의 단점
앞선 Task가 실패하면 뒤 Task를 멈추지 않고 실행함(구현을 안했다면)
ETL 파이프라인 모니터링이 힘듬
이걸 쉽게 하기 위해 Airflow, Luigi, Rundeck 등을 사용함
레트리카에서 제가 만든 파이프라인
서버 데이터는 Pub/Sub으로 실시간 스트리밍으로 데이터를 받고
앱 데이터는 Firebase에서 데이터 적재가 되면, Batch로 데이터 처리
Uber
모든 데이터를 Kafka로 실시간 스트리밍하고, 데이터를 하둡에 저장함
추천 자료
¶
강대명님의 자료
Data Engineering 101
빅데이터를 지탱하는 기술
: 데이터 엔지니어 신입이라면 꼭 읽어보라고 권함. 기초 내용 다 있어요
우리가 다음 주에 실습할 내용
¶
간단한 파이프라인 만들기
클라우드가 발전하면서 점점 덜 신경써도 간단한 파이프라인을 만들 수 있음
Airflow Local에 띄우기
Python Operator
BigQuery Operator
BigQuery Public 데이터 활용할 예정
여러분이 하셔야 하는 것
로컬에 Airflow 설치
GCP 개인 Project 생성 후, Google Cloud Credential 다운(서비스 계정 생성)
참고 링크
BigQuery Admin 권한 설정해야 함
Airflow 설치
pip3 install 'apache-airflow[gcp]'==1.10.3