2021-03-04-TIL

서버는 어떻게 생겼는가?

SPA 아키텍쳐

User -> [Web Server -> WAS(Application Server) -> DB]

​ Apache Tomcat

  • 정적인 컨텐츠 : HTML, CSS, JS, img, media -> Apache가 빠르다, 보안에 유리, 요새는 nginx를 사용(비동기 이벤트 기반), apache는 멀티스레드 기반, 트래픽 조절, 보안 역할

http://aosabook.org/en/nginx.html

  • 동적인 컨텐츠 : 글쓰기, 동적인
  • DB : 스프링기본H2, MySQL, Firebase

성능의 지표 : performance throughput 단위 시간당 동시 접속자 수

서버 2대

User -> [Web Server + WAS] -> DB

서버 3대

User -> Web Server + WAS -> DB1 -> DB2

Master - Slave (x) Primary - Secondary (o)

동기화 복제, 실시간성이 높은 DB를 추가로 둔다.

서버 4대 - 1

개발자는 ssh 로 붙어서 관리, 베스쳔 서버를 따로 두어서 거기에 접속해서 나머지 서버에 접근한다.

web을 베스쳔으로 사용, 터널링을 통해서 여러개를 거쳐서 가지만 바로 접근하는 것처럼 사용가능

서버 4대 - 2

Web Was -> Web Was -> DB1 DB2 이 중간에 로드밸런서가 트래픽을 분산시켜준다.

cf) 쿠버네티스와는 관계가 없다. 이런걸 통째로 관리해주는 개념

관계형 DB는 수평확장이 안되어서 분산이 안된다.

sol1) DB파티셔닝 샤딩 -> 어렵다

sol2) Read Replica sync 비용이 커서 많아봐야 10대정도

DB1은 읽기 전용으로 사용한다. (대부분은 읽기가 많다) DB2는 저장용

L7에서 요청을 읽어서

관리해주는것 자체가 어렵다

WAS가 여러개로 분산되면 미디어 서버가 반드시 필요하다

1) sticky session 로드밸런싱이 잘 안된다는 문제가 있다. -> 세션 db에서 세션 클러스터링을 사용 (Redis 많이 씀)

2)

VPC


[CODE REVIEW] Mission1 (by Shion)

[August]

  • UserController에 @RequestMapping 사용하는 것도 좋을 것 같습니다.
  • @PostMapping url에 카멜 케이스 적용이 필요한지, 대소문자 구문을 하는지
  • IndexController가 추후에도 index만 관리하는지
  • templates/component 네이밍이 적절한지 궁금합니다.
  • /user 를 사용하는데 /users를 Mapping으로 받아주는게 view를 분리한다는 의미가 더 강한 것 같다. 헷갈림의 방지도 되고.

Question에 생성자 없이도 Setter를 사용하여 값을 셋팅해준다.

[K]

  • IndexController static 변수를 사용하는데, Question 컨트롤러가 저 기능을 담당하게 되면 static을 사용할 필요가 없게된다.
  • UserController의 getProfile 메서드는 User의 getter를 사용하는데, 이렇게 하지말고 User의 매칭하는 메서드를 호출하는 식으로 변경 -> 클래스 내부자원에 직접 접근하는 것 보다는 메서드를 호출하여 처리하는 것이 바람직하다.

[Kyu]

  • GetMapping의 경로가 실제 리소스에 맵핑되는 것인가? -> ok
  • 수업 때 html을 자동으로 뭐 해준다는게 무엇? -> 기본 틀에 해당하는 html구조는 그대로 둔 채로 일부 데이터만 받아서 처리하는 동작을 한다. 그 데이터를 받아서 클라이언트 사이드에서 동적으로 렌더링 해준다. (AJAX)

[cooper]

  • 인덱스에서 회원가입 들어갔다가 다시 회원가입 누르면 users/users 두 번 떠서 문제가 되었는데 무엇? ->

[Sky]

  • updateForm.html에 readonly가 좋은 방법인 것 같다.