14:00 ~ 15:30
프론트/백 말고도 정말 다양한 분야가 있고, 둘 중 하나로 자신의 목표를 한정시키지 않았으면 좋겠다.
HTTP
•
대화를 하려면 언어가 필요하고, 브라우저와 웹 서버가 대화할 때는 HTTP라는 언어를 사용
•
요청 & 응답
•
HTTP1.0
◦
connect() → 자원 찾아서 응답 → close()
◦
HTML 파일 파싱 → 이미지 필요
◦
connect() → 자원 찾아서 응답 → close()
◦
DOM 객체를 생성하고 페이지 렌더링
•
스테이트리스 프로토콜
◦
TCP/UDP
HTTP 1.0
•
요청을 하고 응답이 오고 나서야 이후의 추가 요청(이미지 등)을 하므로, 총 요청 시간이 serial(순차적)하게 증가(응답을 받아야 추가 요청을 보내므로)
HTTP 1.1
•
킵 얼라이브
◦
Connect : keep-alive, Keep-alive : timeout=5; max=100 헤더
◦
계속 연결을 유지하므로 connection을 요청마다 다시 하지 않고 유지했다가 다시 요청을 보냄
HTTP 2.0
•
멀티플렉싱
Common Gateway Interface(CGI)
웹 애플리케이션 서버
•
데이터를 어떻게 보낼까? → 표준입출력으로 처리하자
FastCGI
•
바이너리 프로토콜로 변경
•
CGI는 실행 파일을 그대로 실행하므로, 개발자가 while문 하나만 잘못 작성해도 무한순회하며 서버가 죽어버릴 여지가 큼
•
FastCGI 서버를 오픈소스로 만들고, 실행 파일은 스레드로 실행 → 스레드에 문제가 생겨도 서버에 영향을 안주고 kill할 수 있으므로 개발자 영향을 줄일 수 있음
3 layer architecture
Q) 3-tier와 3-layer에서 레이어와 티어의 차이는?
•
layer : 추상적인 개념
•
tier : 물리적인 개념
Old old model
3 layer architecture
Embedded Web Server
Monolithic architecture
•
모놀리식 아키텍처는 컴포넌트들이 밀결합되어있어 부분 컴포넌트가 수정되더라도 전체가 함께 수정
Microservice architecture
•
Presentation layer
◦
웹 서버
•
Business layer
◦
애플리케이션 서버
•
Data layer
◦
데이터베이스
Dependency 있는 거끼리만 묶어서 다루자
서비스는 비즈니스 도메인을 기준으로 분리하는 것이 일반적
•
장점 : 확장, 장애, 배포, 개발(Polyglot)
요즘 시대에 먹히는 이유? 추구하는 바
•
완벽도 좋지만, 어떤 문제가 생겼을 때 그걸 복구해내는 시간이 얼마나 빠른지가 더 중요하다고 생각하는 시대
•
복구한다고 쓰는 시간이 더 아깝다. 문제는 언제나 생길 수 있다
•
Polyglot하게 개발할 수 있고 신기술 적용에서 유리하기 때문
마이크로서비스가 플랫폼 독립적
이게 개발자에게도 중요한 특성인게, “그냥 특정 기술을 유명해서 사용했다”는 식으로 말하는 만큼 개발자스럽지 않은 답변이 없다. 개발자는 기술에 대해 비교 평가할 줄 알아야하며, 그걸 기반으로 기술을 선정하고 설명할 줄 알아야한다.
그리고 그걸 기반으로 유연하게 여러 언어로 개발 가능해야하므로, 그냥 한다는 소리를 안 했으면 좋겠다.





