개발자 성장 일지

2022.03.24 ⭐DB 그리고 객체지향의 문제점

NEWDODORIPYO 2022. 3. 25. 00:03

DB가 죽는 이유 그리고 객체지향의 문제점에 대한 조금... 아니 어려운 이야기를 해주셨습니다  앞으로 진행될 강의와 우리가 고민해야 할 문제들도 포함된 중요한 이야기여서 정리해보겠습니다 

 

 

DB가 죽는이유? 

DB는 기본적으로 여러 사람이 처리할 수 있게 만들어져 있다 그러다 보면 Close(); 를 해줘야 하는데 안 해줘도 처음에는 티가 안 나다가 점점 시스템이 느려지고 결국은 먹통이 된다 시스템이 먹통이 되는 여러 경우 중 하나가 Full GC이다

Full GC가 발생하는 순간, 자바 애플리케이션이 멈춘다. (Stop-the-world). 따라서 Full GC는 성능과 안정성에 아주 큰 영향을 미친다.

그래서 대부분의 경우에는 서버를 한대가 아닌 2대 이상을 보유한다

 

⭐객체 하나에 Thread가 여러 개 객체지향의 문제점

이 상황에서 close를 하게 되면  C만 close 되고 나머지는 살아있게 된다 이런 것이 반복된다면 DB의 공간은 꽉 차게 되고 이러면 DB는 일을 멈추고 기다리게 된다 객체 하나에 스레드가 여러 개이다 보니 이러한 문제가 발생한다 

 

ex) 지하철역에서 우산을 빌려주는 서비스를 한다고 했을 때 반납을 아무도 안 하게 되면 나중에는 결국 빌려줄 우산이 없어서 빌려줄 수 없게 된다 DB , 서버에서도 똑같이 이런 상황이 생긴다 그래서 처음 설계가 잘못된다면 나중에 돌이킬 수 없게 된다

 

👍<이런 상황을 안전하게 만들 수 있는 방법이 없을까? 이 코드가 안전한걸까? 하는 고민을 많이하는 개발자가 되어야한다 >

 

⭐이 상황을 안전하게 만들수있는 방법은?

바로 함수!!!! 로컬 변수!! 로컬 변수는 객체 안에서 만들어졌다가 함수가 끝나면 없어진다 위에 적용해보면

A Thread 가 지나가면 A Thread 만 쓰는 getTime 가 생긴다 B , C 도 마찬가지이다

이러면 각자의 지역변수들은 간섭할 수 없게 된다