본문 바로가기

서버운영 (TA, ADMIN)

(181)
[인프라] 시스템 구성 기본 패턴 풀스택을 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. 웹서비스에서의 인프라 범위 웹서비스를 운용하기 위해서는 애플리케이션뿐만 아니라 인프라 영역의 준비도 필수적입니다. 애플리케이션 엔지니어가 인프라 영역까지 준비하고 관리하는 것은 너무 힘든일입니다. 이유는 취급하는 대상이 너무 많기 때문입니다. 기후나 주요역까지의 거리와 같은 지리적 제약, 네트워크의 기술적인 문제뿐 아니라 배선과 물리적인 거리 등의 물리적 제약, 그리고 하드웨어의 크기, 전원 용량, OS, 미들웨어 등 취급하는 대상이 너무도 다양합니다. 만들고자 하는 웹 서비스에 따라서 달라지겠지만, 일반적인 웹서비스 구축 시에 코로케이션부터 미들웨어까지의 계층까지 다루게 되기도 합니다. 다음은 웹 시스템(웹 서비스)의 계층 구조를 나타낸 표입니다. 계층(레이어) 내용 애플리케이션 독자 개발 및 M..
[리눅스] 해킹과 관련된 리눅스 디렉토리 리눅스는 파일 구조가 좀 다르긴 하지만 대개의 웹 애플리케이션의 /var/www/ 디렉토리에 위치합니다. 리눅스 웹 서버에는 다음과 같이 특별히 웹 해킹과 관계된 몇 개의 디렉터리가 있습니다. /etc/shadow이 파일에는 시스템의 모든 사용자 비밀번호 해쉬 값이 저장되기 때문에 "궁전으로가는 열쇠"라고 부르기도 합니다. /usr/lib이 디렉터리에는 일반 사용자나 쉘 스크립트로 실행되지 않는 오브젝트 파일과 내부 바이너리를 포함합니다. 또한 응용 프로그램에서 사용하는 모든 의존성 데이터 역시 이 디렉터리에 존재합니다. 여기에 실행 파일은 없지만 응용프로그램이 참조하는 모든 파일을 지워버리는 공격이 가해질 수도 있습니다. /var/*이 디렉터리에는 데이터베이스에 관련된 파일, 시스템 로그, 웹 애플리케..