티스토리 뷰

프리온보딩 첫번째 세션 내용을 간략하게 정리합니다.

 

소통할 때 가장 기본이 되는 것은 상대방과 같은 개념을 갖고 있는지다.

예를 들어 껍질이 빨갛고 속은 아삭한 달달한 과일이 있다 하자. A는 자두, B는 사과 혹은 C는 그런 과일을 모른다고 했을 때 A, B, C는 같은 대상에 대해 다른 얘기를 하며 소통에 어려움이 생긴다.

"껍질이 빨갛고 속이 아삭한 달달한 과일"을 사과라 하자라는 동일한 정의 및 개념이 있어야 소통이 원활하다.

개발에 있어서 이러한 기본적인 개념을 알고 있어야 소통에 있어 문제가 되지 않고 기본이 되는 개념들을 위 코드에서는 아래와 같은 내용으로 소개한다.

1. 웹 역사

  1. 인터넷 등장
    1. 전 세계 컴퓨터가 연결되어있는 거대한 컴퓨터 통신망 혹은 컴퓨터 네트워크
  2. 웹 개념
    1. 인터넷을 통해 정보를 주고받을 수 있는 서비스 등장
    2. HTTP 프로토콜 등장
  3. 인터넷 혁신
    1. 유통, 플랫폼 서비스 등

2. 웹 아키텍처 역사

1세대 웹

img

  • 정적인 웹서비스
  • HTML 단방향 전송
  • 단순한 정보 제공
  • Just Markup Rendering , 로직 없음

2세대 웹

img

  • 동적인 웹
  • Javascript 등장
  • 양방향 전송
  • User Interaction 구현

3세대 웹

img

  • SPA(Single Page Application) 등장
    • 단일 HTML 페이지에 모든 파일이 포함된 서비스
    • 모든 코드는 최초의 통신에서 송수신
    • 최초 통신 이후에는 동적으로 페이지 구성
    • 프런트와 백앤드 개발이 분리되기 시작

Mordern 웹

img

Problems

  • User interaction의 중요성
  • 웹 서비스 복잡성
  • 사용자 수, 데이터 양 증가

Solutions

  • 서버 scale out
  • background process 분리
  • Front server, Backend server infra 분리

아키텍처 고도화

1. 기본

클라이언트 - 서버 - DB 구조

2. Scale out

트래픽 증가에 따라 서버 분리

  • Load Balancer 사용
    • Fault Tolerant System(결함 감내 시스템) 효과: 개별 서버 장애 대응이 가능하다
  • 운영 중단 없이 서버 배포 가능

3. MSA

Why not Monolithic but MSA(Micro Service Architecture)

Monolithic System 단점

  • 오류 관리의 한계
    • 일부 오류가 전체 시스템에 영향
  • 확장 효율성의 한계
    • 일부 기능 확장을 위해 전체 서비스가 같이 확장되어야 함
  • 배표 효율성의 한계
    • 일부 기능 업데이트에 전체 서비스가 배포되어야 함
    • 불필요한 배포 빈도수 증가로 인한 오류 리스크 증가
  • 개발 효율성의 제한
    • 하나의 코드 베이스에 decoupling 난이도 증가
    • 다양한 언어 도입이 어려움
    • 개발자 간 코드 의존도가 높아짐

MSA 장점

Monolithic Sytstem 단점을 상쇄

  • 하나의 시스템의 오류가 전체 시스템에 영향이 제한적임
  • 각각의 독립적인 서비스 별로 리소스 운영이 용이
  • 일부 서비스 선택적 배포 가능
  • 서비스별로 담당 인원 분리가 가능하여 효율적인 개발 증대
  • 다양한 언어 및 기술 적용 가능

4. CI/CDI & Docker

CI/CD

많은 개발자의 코드를 배포하기 위해 필요한 단계다. 여러 개발 코드로 수작업으로 배포에는 한계가 있고 배포 전 코드 리뷰 등 코드에 대한 검증을 할 수 있다.

Docker

개발 환경 구축에는 많은 시간이 들어간다. Docker를 활용하면 불필요한 개발환경에 드는 시간을 줄일 수 있고 프로세스 관리에 용이하다.

5. Data Pipeline

빅데이터, 인공지능이 대두되면서 단순히 데이터를 저장만 하는 것이 아닌 데이터가 자산이 되는 시대가 왔다. 데이터를 가공하고 인사이트를 도출하는 시스템이 필요해진다.

Data Pipeline System:

  • Collection/Ingestion -> Processing/Transformation -> Load/Destination

Tech Stacks:

  • Kafka: 메시지/스트리밍 기술 -> Batch, Realtime system
  • Apache Storm
  • HDFS: 분산 데이터 저장 파일
  • MapReduce/Spark
  • Hive: Batch SQL을 통한 분석
  • HBASE/Casssandra: 실시간 NoSQL 분석, Discord에서는 Cassandra 활용
  • Spark MLLib/ Apache Mahout: ML
  • TesnorFlow: ML or Deep learning

6. Mornitoring System

데이터 분석을 위한 시각화 또한 하나의 시스템으로 중요해졌다.

모니터링 지표

  • 네트워크 수치
    • Latency
    • TPS, RPS
    • 트래픽
  • 에러 수치
  • 서버 수치
    • CPU
    • Memory
    • Storage
  • Logs
    • 에러
    • Application logs

Skill stacks

  • AWS CloudWatch
  • Data Dog: 모니터링 대시보드 서비스
  • ELK
    • Elasticsearch, Logstach, Kibana + Beats

7. 보안

외부 접속으로부터 서비스를 보호하기 위한 장치

공격 종류

  • DDos
  • SQL Injection
  • Cross-Site Scripting(XSS)

Solution

일반적으로 클라우드 서비스에서 제공하는 WAF(Web Application Firewall) 많이 사용

  • 이상 트래픽 감지, 대응
  • 필터링
    • Malicious HTTP/HTTPS requests filtering(SQL Injection, XSS)
    • IP Filtering
    • Geolocation Filtering
  • Rate-limiting
  • Bot controling

Reference

반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함