카일 스쿨 5회차

  • Hits
  • #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, 사용자가 원하는 소프트웨어 서비스
  • 클라우드 회사
    • 대표적으로 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로 실시간 스트리밍하고, 데이터를 하둡에 저장함

추천 자료

우리가 다음 주에 실습할 내용

  • 간단한 파이프라인 만들기
    • 클라우드가 발전하면서 점점 덜 신경써도 간단한 파이프라인을 만들 수 있음
    • Airflow Local에 띄우기
    • Python Operator
    • BigQuery Operator
    • BigQuery Public 데이터 활용할 예정
  • 여러분이 하셔야 하는 것
    • 로컬에 Airflow 설치
    • GCP 개인 Project 생성 후, Google Cloud Credential 다운(서비스 계정 생성)
  • Airflow 설치
pip3 install 'apache-airflow[gcp]'==1.10.3