도도한 개발자

[TIL] 2023/09/13 본문

TIL

[TIL] 2023/09/13

Kiara Kim 2023. 9. 13. 23:58

🐈‍⬛ 오늘 공부한 내용

  • <클린 코드> 3장 함수
  • MVC 강의 다시 듣기(Reflection, 웹 애플리케이션의 발전 과정, Servlet과 Servlet Container)
  • 백준 - 평범한 배낭
  • SRP(Single Responsibility Principle)
  • OCP(Open Closed Principle)
  • 디미터의 법칙
  • 주DB가 다운되면 부DB는 어떻게 승격이 되나?
  • 샤딩을 했을 때 문제점이 뭘까?
  • 하나의 서버 내에 DB포트를 다르게 해서 쓰기 전용, 읽기 전용으로 열면 성능상 어떤 이점이 있을까?

 🐾 느낀 점 & 배운 점

<클린 코드> 3장 함수

아침에 일어나서 집 나오기 전까지 읽는다. 

"함수 당 추상화 수준은 하나로"

한 함수 내에 추상화 수준이 섞이면 읽기 어렵다.

"위에서 아래로 코드 읽기: 내려가기 규칙"

한 함수 다음엔 추상화 수준이 한 단계 낮은 함수가 온다. 오늘 MVC 미션 1단계 제출하기 전에 코드를 보니 메소드 분리가 시급해보였다. 그래서 분리를 하려고 하는데 평소엔 별 고민없이 슥슥 지어졌던 메소드 이름이 오늘은 잘 떠오르지 않았다. 필드의 Map에 값을 넣는 과정을 서술하는 식으로 풀어나가고 싶었는데 잘 한건지 모르겠다. 리뷰 잘 부탁드립니다.

 

MVC 강의 다시 듣기(Reflection, 웹 애플리케이션의 발전 과정, Servlet과 Servlet Container)

Servlet이 도통뭔지, Handler, HandlerAdapter는 뭔지 몰라서 강의를 다시 봤다. 본 강의 때 뭘 놓친게 있나 싶었는데 그건 또 아닌 것 같다. 그냥 미션 하면서 그때 그때 코드 까보고 검색하면서 공부하는 게 좋을 것 같다.

 

백준 - 평범한 배낭

좀 깜찍하게 1일 1알고리즘 풀기.. 근데 문제는 안깜찍한ㅎㅎ 냅색 문제다. 예전에 풀려고 하다가 풀이 보느라 못풀었는데 재도전 했다. 역시 어려웠다. 알고리즘 장인 제이한테 물어보니 설명이 깔끔하게 정리된 블로그를 알려줘서 잘 이해하고 풀었다. 내일도 냅색 문제 하나 더 풀어야지.

 

SRP(Single Responsibility Principle), OCP(Open Closed Principle)

객체지향 SOLID 원칙 중 SRP(단일 책임 원칙)과 OCP(개방 폐쇄 원칙)다. 한 번 더 확실하게 짚고 넘어가기 위해서 공부했다.

 

디미터의 법칙

객체 지향 생활 체조 원칙 중 '한 줄에 점 하나만 찍는다'로 요약되기도 한다. 객체 간 관계를 설정할 때 객체 간의 결합도를 효과적으로 낮출 수 있는 유용한 지침이다. 우리 프로젝트에서 혹시나 이 원칙을 위배한 코드가 있나 살펴봤는데 찾지 못했다. 나만 잘하면 될 듯.

 

주DB가 다운되면 부DB는 어떻게 승격이 되나?

오라클 기준에서 xml 파일에 세팅해줄 수 있다고 한다. hostname 등을 이용해 Master-Slave 설정을 해준다. 그리고 주DB가 죽었을 때 어떤 DB가 주가 되는지도 세팅할 수 있다(고 한다)

 

샤딩을 했을 때 문제점이 뭘까?

한 샤딩에 요청이 몰라면 문제가 될 수 있다. 예를 들면 Hotspot. 즉 분산이 잘 되지 않고 한 쪽으로 Data가 몰리게 되면서 자연스럽게 Hotspot이 되어 성능이 느려지게 된다. 그렇기 때문에 균일하게 분산하는 것이 중요하다.

하나의 해결 방법으로 샤딩을 할 때 모듈러를 처음부터 아예 크게 잡는다. 

 

하나의 서버 내에 DB포트를 다르게 해서 쓰기 전용, 읽기 전용으로 열면 성능상 어떤 이점이 있을까?

읽기가 자주 발생하지만 동기화가 크게 중요하지 않은 서비스에선 성능상으로 이득이 있을 것 같다.

 

엄,,,MySQL 공부해야한다. 진짜로. 

💭 감정회고

엄마를 위해 갤탭을 주문했다. 엄마한테 빌려드린 내 아이패드를 되찾아오려는건 절대 아니고 마음 편하게 쓰시라고 하나 장만했다. 아이패드로 릴마큐 읽어야지 룰루~

'TIL' 카테고리의 다른 글

[TIL] 2023/09/19  (1) 2023.09.19
[TIL] 2023/09/14  (0) 2023.09.14
[TIL] 2023/09/12  (3) 2023.09.12
[TIL] 2023/09/11  (0) 2023.09.11
[TIL] 2023/09/08  (2) 2023.09.08