티스토리 뷰
프리온보딩 첫번째 세션 내용을 간략하게 정리합니다.
소통할 때 가장 기본이 되는 것은 상대방과 같은 개념을 갖고 있는지다.
예를 들어 껍질이 빨갛고 속은 아삭한 달달한 과일이 있다 하자. A는 자두, B는 사과 혹은 C는 그런 과일을 모른다고 했을 때 A, B, C는 같은 대상에 대해 다른 얘기를 하며 소통에 어려움이 생긴다.
"껍질이 빨갛고 속이 아삭한 달달한 과일"을 사과라 하자라는 동일한 정의 및 개념이 있어야 소통이 원활하다.
개발에 있어서 이러한 기본적인 개념을 알고 있어야 소통에 있어 문제가 되지 않고 기본이 되는 개념들을 위 코드에서는 아래와 같은 내용으로 소개한다.
1. 웹 역사
- 인터넷 등장
- 전 세계 컴퓨터가 연결되어있는 거대한 컴퓨터 통신망 혹은 컴퓨터 네트워크
- 웹 개념
- 인터넷을 통해 정보를 주고받을 수 있는 서비스 등장
- HTTP 프로토콜 등장
- 인터넷 혁신
- 유통, 플랫폼 서비스 등
2. 웹 아키텍처 역사
1세대 웹
- 정적인 웹서비스
- HTML 단방향 전송
- 단순한 정보 제공
- Just Markup Rendering , 로직 없음
2세대 웹
- 동적인 웹
- Javascript 등장
- 양방향 전송
- User Interaction 구현
3세대 웹
- SPA(Single Page Application) 등장
- 단일 HTML 페이지에 모든 파일이 포함된 서비스
- 모든 코드는 최초의 통신에서 송수신
- 최초 통신 이후에는 동적으로 페이지 구성
- 프런트와 백앤드 개발이 분리되기 시작
Mordern 웹
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
반응형
'Development' 카테고리의 다른 글
docker compose VS docker-compose (0) | 2022.02.17 |
---|---|
Semantic Versioning & Conventional Commit (0) | 2021.12.22 |
환경변수 관리 하기(direnv, dotenv) (0) | 2021.12.14 |
Concurrent requests in go and python (0) | 2021.12.06 |
[Test]유닛 테스트(Unit Test) vs 통합 테스트(Integration Test) vs 기능 테스트(Functional Test) (0) | 2021.11.11 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- Python
- HTTP/3
- QUIC
- Complier
- buildkit
- go
- inflearn
- 프리온보딩
- Isolate level
- no-op
- docker-compose
- MSA
- 원티드
- 덕타이핑
- http
- k8s
- database
- thetextbook
- 위코드
- Network
- pytest
- Git
- GitHub
- cka
- web_server
- user-agent
- HTTP/2
- 창업
- direnv
- gitignore
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함