Skip to main content

2 posts tagged with "aws"

View All Tags

서버리스 메모 앱 토이 프로젝트

토이 프로젝트를 진행하기 이전에..#

사내에서 화요일 오후2시에 대략 30분 ~ 1시간 정도 자유롭게 참여할 수 있는 기술공유 시간을 가지고 내부적으로 발표시간을 가지고 있었다.

현재 글을 쓰는 시점으로 1년 4개월정도 운영해본 결과 다들 관심있는 기술이 다르고 발표하는 인원이 초반에는 꾸준하게 있었으나 시간이 지날수록 변동폭이나 참여할 수 있는 인원 예측이 어려워 테크톡 시간이 비효율적인 상황이 발생하기도 하였다.

물론, 참여의 경우 부담 없이 참여하는 방식으로 자율방식을 권장 중이지만 최근 6개월 이상은 개인적으로 혼자 발표하는 시간들이 많아진 것 같아 아쉬운 점이 있었다.
(개인적으로 테크톡을 참여하면서 1년 4개월동안 휴계기간 이외에 단 한번도 발표를 하지 않은적이 없다.)

2022.03.15(화) 오후 2시에 테크톡 시간에 테크톡 시간에 각자 IT 관심분야 외에 다 같이 공통 목표를 가지고 토이 프로젝트를 간단하게 구축해 보면 어떨까라는 주제로 회의를 통해 이야기를 나누었다.

이야기의 결론은 CRUD 모두 구현이 가능하고 백앤드부터 프론트앤드까지 전체적으로 구현 가능한 서버리스 메모 웹 어플리케이션 프로그램을 진행하기로 결정하였다.

목표#

메모 웹 어플리케이션을 구성하기 위해 HTTP 웹 어플리케이션에서 요구하는 전반적인 흐름을 파악하고 메모관련 기능 구현을 통해 풀스택 기술스택에 대해 어떤것들이 필요한지 전반적으로 경험할 수 있다.

  • AWS 서비스를 이용해 백앤드에서 회원가입, 로그인, 데이터의 CRUD API를 구성한다.
  • 프론트앤드에서 React를 사용하며 로그인, 세션, 데이터의 추가, 수정, 저장, 삭제, 파일 업로드 등을 구현한다.

요구사항#

  • Javascript 문법에 기본적인 사용법
    • const, let, 분기문, 반복문, array, function, class
  • HTTP 통신에 대한 전반적인 이해
  • React 16.3 이상 사용
  • 1주일에 개인 시간 2~3시간 정도 필요(기능 구현)
  • 1주일 동안 구현한 것을 테크 톡 사이트에 간단히 정리하고 발표
  • 서로에게 코드공유 및 질문할 수 있는 시간을 가진다.

모든 코드가 제공되기 때문에 따라할 순 있지만 이해를 위해서 직접 구현시에 기본적인 사항들을 조사하고 공부하는것이 요구된다.

백앤드#

  • AWS Serverless-Stack Framework 사용
  • AWS Cognito 서비스를 사용해 이메일로 회원가입이 가능하도록 구성
  • AWS Lambda 서비스를 사용해 백엔드에서 필요한 비지니스 로직을 구성
  • AWS ApiGateway 서비스를 사용해 데이터의 컨트롤을 위해 REST API 형태로 구성
  • AWS S3 서비스를 사용해 파일 조회 및 저장을 구성

프론트앤드#

프론트앤드는 기본적으로 백앤드가 구성되있는 상태에서 진행

  • React 16.3 버전 이상으로 데이터를 받아와 화면을 구성
  • 회원가입, 로그인 화면 구성
  • 메모 추가, 수정, 삭제, 조회 구성

준비사항#

AWS의 많은 서비스를 명령줄을 통해 쉽게 사용하기 위해서 AWS CLI 설치가 필요합니다.

AWS CLI는 Python 2 버전 2.6.5+ 또는 Python 3 버전 3.3+ 와 Pip가 필요합니다. Python 또는 Pip 설치가 필요하면 아래 링크를 참고해서 설치합니다.

맥 사용자는 아래 Python과 Pip을 설치해야 합니다.

MAC OS 사용자#

Python, Pip 인스톨 후 아래 명령어를 터미널에서 실행합니다.
(달러는 명령어에 포함되지 않습니다.)

$ sudo pip install awscli

또는 Homebrew를 사용하고 있다면 아래 명령어를 터미널에서 실행합니다.

$ brew install awscli

Window OS 사용자#

윈도우 사용자는 아래 msi로 설치를 진행합니다.

AWSCLIV2 msi 다운로드

서버리스 데이터 분석

AWS 서버리스 데이터 분석 시스템 아키텍쳐#

아래 유튜브 영상을 보고 관심이 생겨 글을 작성하게 되었다.

서버리스 데이터 분석 시스템 구축 | Part 1. 개념 및 워크 플로우

  • Sungmin Kim.
  • Solutions Architect, AWS

데이터로 어떤 작업을?#

  • 네트워크 분석
  • 추천
  • 머신러닝
  • 그 외...

What is Architecting

어떤 문제를 풀기위해서 다양한 방법들이 있을텐데, 다양한 장단점들을 Trade-off 해서 밸런싱하는것이 아키텍팅의 중심이라고 생각할 수 있다.

꼭 어떤 방법론이나 적용법이 가장 좋은 방법이라고 단정지을 순 없다.

데이터#

데이터만 가지고 가치가 있는것이 아니라 데이터를 가지고 원하는 결과 및 인사이트를 내기위하여 과정들이 필요하다.

3+1 Vs of Big Data

과거에 비해서 분석시스템이 만들기가 더 어려워졌을까?

그것은 빅데이터의 4가지 특성#

  • 어마어마게 커진 Volume
  • 생산되는 속도의 차이 Velocity
  • 데이터의 다양성 Variety
  • 원하는 가치 Value

이런 복잡성 때문에 현대에 와서는 데이터분석 시스템이 복잡해지고 구축해지기 어려운 점이 있다.

Structured, Unstructred, and Semi-Structured#

데이터의 다양한 모양 및 구조

Data Structured

  • Structred Data
    • RDB에 잘 정의되있는 데이터
  • Unstructred Data
    • 동영상, 텍스트 데이터
  • Semi-Structured Data
    • CSV 데이터, JSON 데이터

Data Temperature Spectrum#

Data Spectrum

  • Hot data
    • 빠른 빈도로 데이터 요청
    • 응답시간이 빨라야 함
    • 데이터의 양은 적음
    • In-Memory DB 사용

세션값 요청

  • Cold data
    • 많은 양의 데이터 요청
    • 응답시간은 좀 높아도 괜찮음

연말에 정산되는 데이터

  • Warm data
    • 상시적으로 사용하는 데이터
    • 적당한 응답시간

모든 데이터를 동일한 스토리지, 분석 솔루션으로 처리하기 보다는 목적에 맞는 데이터의 온도에 따라 나누어서 적용하는게 바람직하다.

Simpilfy Big Data Processing#

Data Spectrum

아주 단순한 과정을 표현하자면

  1. 데이터 수집
  2. 데이터 저장
  3. 분석 및 프로세싱
  4. 데이터 소비 및 활용

중요한 점#

  • 데이터의 처리 속도
  • 데이터의 볼륨의 처리 가능량
  • 전체적인 프로세스의 비용

Business Intelligence System#

Business Intelligence System

CRM & CDC#

주기적으로 변경되는 데이터 저장

WEB#

쇼핑몰 등에서 클릭하는 데이터등을 저장

IoT#

사물 인터넷의 센서 데이터를 모아서 저장

BI-Architecture#

bi-architecture-system

  • 모바일, 데스크탑등의 접근
  • Amazon RDS 서비스를 통한 데이터 저장
  • QuickSight 서비스를 통한 데이터 시각화

QuickSight#

  • 빠른 응답의 BI 서비스
  • 세션당 요금이 청구
  • 보다 쉽게 적용가능한 머신러닝 적용가능
  • 데이터를 시각화해주는 서비스

aws-quicksight

서버리스 데이터 분석을 통해..#

AWS의 추상화된 서비스를 잘 연계해서 사용하면 보다 복잡하고 여러 기술들을 요구하는 BI 시스템에 대해 보다 쉽게 구축이 가능하다.

아주 간단한 예시외에도 여러 인프라 및 아키텍쳐를 통해 원하는 데이터를 분석하고 보다 미래에 있을 상황 및 수요를 어느정도 정확도 있게 예측하고 대비 가능하지 않을까라고 생각해본다.