개발자를 위한 인프라 기초 총정리 - 미들웨어
미들웨어 Middleware
미들웨어는 OS와 비즈니스를 처리하는 애플리케이션 사이에 들어가는 각종 소프트웨어를 말합니다. 웹 서버, DBMS, 시스템 모니터링 툴 등이 있습니다. 오픈 소스부터 상용 솔루션까지 다양하므로 꼼꼼히 검토 후 필요한 요건에 따라 선정해야 합니다.
웹 서버 Web Server
웹 서버는 클라이언트가 보낸 HTTP 요청을 받아 웹 콘텐츠를 응답으로 반환하거나 서버쪽 애플리케이션을 호출하는 기능을 가진 서버입니다.
이름설명
Apache HTTP Server | 폭 넓게 사용되는 전통의 오픈소스 웹 서버. |
Internet Information Services | Microsoft에서 제공하는 웹 서버. Windows Server 시리즈와 같은 OS 제품에 들어 있음. |
Nginx | 소비 메모리가 적으며 리버스 프록시와 로드밸런서 기능을 갖추고 있는 오픈 소스 웹 서버. |
DBMS
데이터 베이스 관리 시스템(Database Management System, DBMS)은 데이터베이스를 관리하는 미들웨어입니다. 데이터의 CRUD(Create, Read, Update, Delete)와 같은 기본 기능과 트랜잭션 처리 등 많은 기능을 포함합니다.
다양한 종류의 DBMS 가 있는데요. ANSI SQL 이라는 표준이 있으나 벤더마다 구문이 상당히 다릅니다. 또한 DBMS 마다 지원하는 기능과 성능, 가격이 천차만별이므로 필요한 용도에 따라 선택하게 됩니다.
이름설명
Oracle Database | Oracle 이 제공하는 상용 RDBMS. 주로 기업에서 많이 사용되는 데이터베이스로 글로벌 DB시장 점유율 1위. 상당히 고가인만큼 많은 기능을 제공. |
MySQL | Oracle 이 제공하는 오픈 소스 관계형(Releational) DBMS. 가장 많이 사용되는 오픈 소스 RDBMS로 MySQL AB라는 제작사를 썬이 인수하고 이후 오라클이 썬을 인수하면서 오라클이 소유주가 됭. 무료인 커뮤니티 버전과 유료인 상용 버전으로 나뉘어져 있음. 이후 오픈 소스 진영에서 MySQL을 기반으로 한 MariaDB를 만들었음. |
Microsoft SQL Server | Microsoft 에서 제공하는 상용 RDBMS. Windows 에 특화되어 있음. |
PostgreSQL | Oracle, MySQL, SQL Server 에 이어 글로벌 점유율 4위인 오픈 소스 RDBMS. |
위 표에는 RDBMS 만 정리해놨지만 NoSQL(Not Only SQL)도 많이 사용됩니다. NoSQL은 SQL만을 사용하지 않는 DBMS 를 말하는데요. 데이터를 저장할 때 테이블 대신 다른 형태로 저장하는 방식입니다. RDB와 비교해서 어느 것이 더 좋다기 보다 용도에 맞게 사용하는 것이 중요합니다.
형태설명종류
Key-value | 단순한 형태의 NoSQL. 간단해서 속도가 빠르고 익히기 쉬움. 값의 내용을 사용한 쿼리가 불가능해서 애플리케이션 레벨에서 처리가 필요. |
Redis Amazon DynamoDB Memcached |
Document | Key-Value 와 비슷하나 단순한 Value가 아닌 계층구조인 도큐먼트로 저장됨. 쿼리를 사용할 순 있으나 일반 SQL 과는 다름. |
MongoDB Couchbase |
Wide column stores | 테이블, 로우, 컬럼을 사용하지만 RDB 와는 달리 컬럼의 이름과 포맷은 같은 로우라도 다를 수 있다. 2차원 Key-Value 형태. | Cassandra HBase |
Graph | 데이터를 그래프처럼 연속적인 노드, 엣지, 프로퍼티의 형태로 저장. SNS 나 추천 엔진, 패턴 인식 등 데이터 간의 관계를 위주로할 때 적합. |
Neo4j |
DBMS 의 글로벌 점유율과 다양한 모델을 DB-Engines 에서 확인할 수 있습니다.
https://db-engines.com/en/ranking_trend
시스템 모니터링 System Monitoring
시스템 운영을 위해서는 여러 상태를 지속적으로 감시해야 합니다. 네트워크, 서버, 클라우드, 애플리케이션, 서비스, 트랜잭션 등 다양한 레벨에서 모니터링을 하면서 이상 여부를 확인하고 원인을 분석합니다.
이름설명
Zabbix | Zabbix SIA 가 개발한 오픈 소스 모니터링 툴. 다양한 서버의 상태를 모니터링 가능 |
Datadog | Datadog 가 개발한 서버 모니터링 SaaS. 따로 서버를 도입할 필요 없이 웹 브라우저에서 모니터링 가능. 멀티 클라우드 환경에서도 손쉽게 모니터링이 가능. |
Mackerel | Hatena 가 개발한 서버 모니터링 SaaS. 클라우드 서버 모니터링에 유용. |