2020. 4. 11. 22:06ㆍ생활코딩/생활코딩웹
개요
프로그램을 만들다 보면 성장하게 됩니다 이렇게 성장함으로써 어떻게 대쳐 해야 하는지 알아봅니다.
성장
처음에는 하나의 HTML로 시작하여 지금은 Mysql과PHP로 증가를 합니다 이렇게 성장을 하는 것인데
이것들은 하나의 컴퓨터에서 처리를 하는 것인데 만약 이 프로 그렘이 더욱더 거대해진다면 여러 대의 컴퓨터가 필요해집니다.
이렇게 거대해진 프로그램을 해결하는 방법은 두 가지가 있습니다 하나는 Scale Up 즉 컴퓨터 하나의 성능을 매우 증가시켜 해결하는 방법이 고 나머지 하나는 Scale out전략이 있습니다 하나의 컴퓨터로 모든 것을 해결하는 것이 아니라 적당한 크기의 여러 대의 컴퓨터가 협력해서 웹 애플리케이션이 동작을 하게 만드는 것입니다.
우리의 컴퓨터에는 웹서버 PHP MySql가 설치되어있으며 우리가 만든 웹 애플리케이션은 웹서버 php mysql라는 소프트웨어를 이용하여 동작하게 됩니다 다른말로 이것들 위에설치되어 동작하게됩니다 그런 맥락에서 웹서버 php mysql를 플랫폼이라고 말합니다 이러한 플랫폼은 자신의 컴퓨터 1대에서 동작하고 있습니다 이 이름을 computer1이라고 부르겠습니다.
그런데 이렇게 우리의 서버 컴퓨터에는 웹서버 php mysql 3개의 소프트웨어가 설치되어 동작하는데 사용자가 늘어나거나 웹 애플리케이션에 정보가 많아지거나 애플리케이션이 많은 기능이 가지게 되면 컴퓨터는 느려지고 사람이 많이 접속하는 시간에 죽게 되어 큰 피해를 입을 수 있습니다.
웹 애플리케이션이 커졌을 때 그 값이 자신의 컴퓨터의 성능을 넘게 되면은 성능을 업그레이드할 수도 있지만 보동은 다른 평범한 컴퓨터를 사 mysql을 분할을 하여줍니다. 즉 Scale out전략 인 셈입니다. 이렇게 웹서버와 php를 가지고 있는 computer1과 computer2로 분할되어 컴퓨터의 성능을 정상적으로 올릴 수 있습니다.
이렇게 분할을 하여 정상적 을로 돌아가다 또 하나의 컴퓨터로 웹서버와 php가 쌓이다 보면 또 성능이 저하가 될 수 있으므로 또 php서버를 computer3로 지정하여 분할해줄 수 있습니다.
이렇게 구분되면서 데이터베이스가 있는 컴퓨터를 데이터베이스 서버 php가 있는 컴퓨터를 애플리케이션 서버라고 합니다.
만약 여기서 또 성장하게 되어 부하가 걸리게 되면 또 하나의 컴퓨터를 구매하여 역할을 분할해줍니다.
위의 사진처럼 mysql을 분할해줍니다 여기서 mysql master과 mysql slave라는 이름을 구분하여줍니다.
mysql master에 해당되는 컴퓨터에 있는 정보를 mysql slave가 계속 복제를 하여줍니다. 그리고 php는 mysql master에게는 쓰기 작업을 mysql slave에게는 읽기 작업을 부여합니다.
이렇게 mysql master에는 데이터를 추가 수정 삭제를 부여합니다 이렇게 mysql master에서 저장된 데이터들이 mysql slave가 복제하여 php에서 읽어올 때에는 mysql slave에서 읽어오게 됩니다.
이렇게 하여도 읽는 사람들이 늘어나게 되면 하나의 mysql slave에는 부하가 생길 수 있기 때문에
위의 처럼 읽기 전용 mysql slave를 추가하여 읽기를 대응할 수 있게 할 수 있습니다 각각 master에서 값을 가져오기 때문에 결과적으로 더 많은 양의 데이터를 읽어올 수 있게 됩니다.
하지만 이렇게 하면 master 쪽에서 늘려주어야 할 쯤이 오게 됩니다
그럴 때는 샤딩을 사용하여 master 쪽을 늘려줄 수 있습니다. 또 이렇게 많은 값을 php이 부담이 가기 때문에 그럴 때는
이렇게 php를 늘려 수많은 데이터베이스를 경우에 따라 master와 slave를 각각의 웹서버에 적절히 분배를 해줄 수 있습니다..
이제는 웹서버 쪽을 늘려볼 것인데요 웹서버를 늘릴 때는 2가지 방식이 있습니다. 하나는 Round-Robin방식 나머지 하나는
Load Balancer을 사용하여주는 것입니다. 이것을 각각 알아보겠습니다.
사용자가 주소창에 opentutorial.org치면 컴퓨터는 도메인 네임으로 갈 능력이 없기에 dns서버로 가 opentutorial.org의 아이피를 물어보고 그것을 알려주어 접속이 가능하지는 것입니다. 이렇게 웹서버에 접속이 되는 것입니다.
위의 사진처럼 웹서버를 늘려주어 dns에서 사용자 1에는 computer1의 ip 사용자 2에게는 computer2를 웹서버로 넘어가게 됩니다 이렇게 접속하는 사람마다 서로 다른 ip를 dns가 알려줘서 각기 다른 컴퓨터에 접속하도록 해주는 방식은 Round-Robin방식이라 합니다.
위의 사진은 Load Balancer방식으로 부하를 분산해주는 분배기와 같은 역할을 하는 소프트웨어 또는 장비를 Load Balancer라고 합니다.
Load Balancer는 대량의 데이터를 처리할 수 있도록 설계되어있는 시스템입니다 그러면 Load Balancer가 모든 트래픽을 받아서 상황에 따라 computer1에 보내고 computer2에 보네에 분산할 수 있다는 장점이 있습니다.
이렇게 다양한 방식들을 하여 규모 있는 에플리 케이션을 만들 수 있습니다.
참고한 수업 링크