본문 바로가기

전체 글

(658)
[인프라] 서버 모니터링 실제 실행 환경이 구동되면 장애 탐지나 각종 인프라 리소스 상태를 파악하기 위해 시스템을 모니터링해야 합니다. 서버 모니터링에 대한 개요와 클라우드 서비스로 Docker 컨테이너를 모니터링하는 방버에 대하여 알아봅니다. 서버 모니터링의 종류시스템 운영에서 가장 큰 목표는 시스템의 안정적인 구동입니다. 이를 위해 시스템을 구성하는 서버와 네트워크 상태를 모니터링하고 적절하게 관리해야 합니다. 다음은 가장 일반적인 서버 모니터링 항목입니다. 1. 장비 모니터링시스템을 구성하는 장비에 문제가 있는지 체크하여 하드웨어나 네트워크 장애 발생 유무를 확인합니다. 클라우드로 시스템을 구축한 경우에는 클라우드 서비스 정상 여부를 클러스터 밖에서 모니터링해야 한다. 2. 서비스 모니터링서비스에 문제가 있는지 체크합니다...
[인프라] 시스템 구성 기본 패턴 풀스택을 1대의 시스템으로 구성하기 일반적인 웹 서비스를 1대의 서버로 구축한다고 가정하면 역할의 전형적인 구분 방법은 다음과 같습니다. [Web] - 클라이언트의 접속 - 데이터 전송 - 정적 데이터 전달 - 동적 데이터 중계 - 동적 데이터 생성 - 애플리케이션 로직 [DB] - 데이터베이스의 가동 및 데이터베이스의 데이터 보관 [File] - 파일 형식의 데이터 보관 - 화상 및 프로그램 파일 등을 보관 각각의 역할마다 대표적인 제품은 아래와 같습니다. Web Web 서버나 애플리케이션 서버 nginx, Apache(cgi/mod_php/mod_perl), php-fpm, plack, Unicorn, gunicorn, Tomcat, Glassfish, WebLogic, JBoss 등 DB RDBMS..
[인프라] NAT에 의한 IP 주소 변환 글로벌 IP 주소는 그 수가 부족해지고 있기 때문에 이에 대한 대응으로서 사설 IP주소를 활용하는 NAT(Network Address Translation)가 이용되고 있습니다. 사설 IP 주소와 글로벌 IP를 변환함으로써, 각각의 기기가 글로벌 IP를 가지지 않은 채로 글로벌 네트워크와 통신을 할 수 있게 해주는 기술이 NAT입니다. 엄밀하게 말해서 NAT라고 하기보다는 IP 주소와 접속포트를 변환하는 NAPT(Network Address Port Translation)가 사용되는 경우가 많습니다. 실제로는 NAT 라우터가 소스 IP와 소스 포트 및 목적지 IP와 목적지 포트를 기억해 둠으로써 IP 주소를 변환하는 구조입니다. 이는 가정용 라우터에서도 흔히 사용되고 있으며, 대규모 서비스에서도 많이 사..
[서버관리] 단일호스트 서버의 부하 튜닝 '부하분산'이라는 말에서 떠오르는 것은 대부분의 경우 복수의 호스트로 처리를 나누어 담당시키는, 문자 그대로의 '분산'입니다. 그러나 원래 한 대에서 처리할 수 있는 부하를 서버 10대로 분산하는 것은 본말이 전도된 것입니다. 단일 서버의 성능을 충분히 끌어낼 수 있는 것을 시작으로 복수 서버에서의 부하분산이 의미를 갖습니다. 추측하지 말라, 계측하라 단일 호스트의 성능을 끌어내는 데에는 서버 리소스의 이용현황을 정확하게 파악할 필요가 있습니다. 즉, 부하가 어느 정도 걸리고 있는지를 조사할 필요가 있습니다. 그리고 이런 계측작업이야말로 단일 호스트의 부하를 줄이는 데 가장 중요한 작업입니다. "추측하지 말라, 계측하라" - 프로그램 명언입니다. 부하분산의 세계도 예외없이 이에 해당합니다. 계측함으로써 ..
[성능튜닝] 대규모 데이터 처리(메모리와 디스크, 웹 애플리케이션의 부하) 대규모 서비스의 데이터 규모 한 서비스의 데이터 규모는 다음과 같습니다. 한 테이블당 레코드 건수가 1,500만이나 5,000만 정도가 됩니다. 데이터 크기로는 entry라는 테이블이 3GB, bookmark라는 테이블이 5.5GB, tag 테이블이 4.8GB, 그리고 HTML 텍스트 데이터도 압축해서 저장하고 있는데, 이것이 200GB를 넘고 있습니다. 전체적으로 기가바이트 단위가 됩니다. Google이나 Yahoo!가 사용하고 있는 규모가 되면 더 나아가 테라바이트, 페타바이트가 되므로 이는 초대규모입니다. 보통 웹 애플리케이션을 만들면서 좀처럼 기가바이트 단위의 DB는 나오지 않으므로 일반적인 웹 애플리케이션이라는 관점에서 보면 큰 규모인 것입니다. 레코드 수 데이터 크기 entry 테이블: 1,5..