본문 바로가기

엔지니어가 되자/데이터엔지니어링

(6)
AWS EC2에 Docker 환경 배포 작업기 - WAS(Django) / Web Server(Nginx) / Mysql DB 1. 작업 배경 사이드 프로젝트로 Django 백엔드 웹사이트를 개발까지는 했는데 이걸 어떻게 배포해야하나 하면서 이리저리 삽질하면서 AWS EC2에 올린 작업기다. 혼자 알아본 내용으로만 끝났으면, 그냥 django runserver로 WAS만 올리고 끝났을텐데 동쪽의 귀인 이누가 나타나 같이 작업하면서 Nginx 웹서버와 Mysql DB 까지 도커라이징해서 배포하는 과정을 진행할 수 있었다. 그 과정을 남겨보았다. 2. 작업 계획 - 서버 구동: AWS ec2로 Ubuntu 서버를 띄운다. - WAS 구동: 깃허브에 있는 django 소스를 클론해와서 django WAS를 도커 이미지로 빌드하고 해당 이미지 컨테이너를 띄운다. - WAS 구동은 gunicorn을 사용 - python3.10 버전 bu..
[글또] 스칼라와 친해지기 (개념/설치/문법) Java에서 갈라져 나온 언어인 스칼라를 정리해보자 1. 소개 - 스위스 로잔 연방 공과대학교(EPFL)의 마틴 오더스키(Martin Odersky)가 개발했다. - 자바의 제너릭 설계에도 참여했던 마틴 오더스키가 설계 도중 창안 - 그렇기 때문에 자연스럽게 스칼라도 Java 계열의 언어이며 JVM위에서 동작하도록 고안되었다. - Scalable language를 줄여서 Scala가 되었다고 한다. - 초기 학습곡선이 꽤 높다고 한다. (무엇이 다른 언어에 비해 초기학습곡선을 높게 만든걸까?) - 미국에서 2018년부터 현재까지 프로그래머 연봉 1위의 언어라고 한다. - 아마 빅데이터 엔지니어링 관련하여 Spark과 호환이 가장 좋은 언어이기 때문이지 않을까 생각중. - 빅데이터 엔지니어 연봉 = 스칼라..
[글또] Spark 정리하기(2/2) - Dataframe, Dataset 스파크의 데이터구조 개념중 Dataframe과 Dataset에 대하여 정리합니다. Dataframe 기존의 RDD한계 때문에.. 메모리나 디스크에 저장공간이 충분하지 않을 경우 동작하지 않음 구조화 데이터와 비구조화 된 데이터를 함께 저장하여 효율성 감소 직렬화(JAVA)와 Garbage Collection을 사용하여 메모리 오버헤드 증가 별도 최적화 엔진 별도로 존재하지 않음 > 최적화 작업이 필요 .. Spark 진영에서는 1.3v 부터 Dataframe 개념을 도입 Schema RDD라고 불리기도 함 기본적으로 Structured Data 구조로 이루어지게 된다. 행과 열이 존재하며 그렇기 때문에 SparkSQL등을 통해 SQL 질의를 처리할 수 있게 된다. (1.3v 이후로 가장 큰 장점) GC(..
[글또] Spark 정리하기 (1/2) - 개념, RDD 다른 분들이 정리해주신 블로그 기록을 따라가며 개인적으로 정리를 시작! Spark이란? - Spark은 "General Purpose High Performance Distributed Platform (범용 목적의 분산 고성능 클러스터링)"이다. - Spark이 처음에는 SQL과 같은 데이터 연산 처리를 위한 하나의 문법 정도가 아닐까 하고 막연하게 생각하고 있었는데 기존 정리된 블로그들을 따라가다보니 하나의 데이터 처리 플랫폼 라이브러리에 가깝다는 생각이 든다. 하나의 노드로는 처리하기 힘든 대규모의 데이터를 여러개의 분산된 노드들을 통해 데이터를 처리할 수 있도록 도와주는 데이터 처리 플랫폼. - 그렇기 때문에 Spark 클러스터/플랫폼 위에서 SQL을 수행하는 것은 물론이고, ML라이브러리 (Ex..
[글또] 아마존 레드시프트(AWS Redshift) 이해하기 회사에서 사용하고 있는 데이터 웨어하우스인 AWS Redshift를 아무런 고민없이 사용하다가 어떻게 돌아가는지 궁금해서 한번 알아보았습니다. 김용우 님의 글을 주로 참고했습니다. (링크) 레드시프트(AWS Redshift) - 레드시프트는 아마존 웹서비스에서 제공하는 대용량 병렬처리 관계형 데이터 웨어하우스 서비스 - 일반적인 트랜잭션을 위한 데이터베이스보다는 분석목적의 데이터 저장소에 가깝다 - 병렬처리 관계형 데이터베이스로 리더 - 팔로워 노드 기반의 연산을 수행 - 외부 서비스와의 통신은 오로지 리더 노드(Leader Node)에서만 이루어지게 됨 - 데이터의 업데이트는 S3를 경유하여 이루어짐 - Compute Node의 경우 이론상 여러개로 무한 증식이 가능 - 기존 사용하던 리더 - 팔로워 ..
[개발지식] MSA(Micro Service Architecture)란? MSA 개념에 대해 간단하게 정리를 합니다. MSA(Micro Service Architecture)란? Micro Service Architecture(이하 MSA)란 한 웹서버 내에서 서로 다른 환경에서 구동되는 웹 어플리케이션 서버(WAS)가 혼재되어 구성되어있는 서버 아키텍쳐를 의미한다. MSA가 왜 각광받고 있는지를 이해하기 위해서는 그 이전에 개발환경을 살펴볼 필요가 있다. Monolithic Architecture라고 부르는 구조는 MSA 이전에 주로 활용되어 오던 구조로.. 웹 애플리케이션 서비스를 동일한 개발환경 (Ex; 개발언어, 프레임워크 등..)하에서 개발하고 각 기능의 애플리케이션 별(Ex; 회원가입, 상품등록 등..) 구조를 한 묶음으로 관리하던 개발 아키텍쳐를 의미한다. 하지만..