TL;DR
추상 vs 구체에 대해 실생활 예시를 통한 비교를 합니다.
추상 vs 구체 예시
CASE : 자동차
차를 운전하기 위해서 우리는 시동을 걸고, 기어를 D로 놓고 엑셀 페달을 밟으면 전진한다. 후진을 하기 위해서는 기어만 R로 변경하고 엑셀 페달을 밟는다. 멈추고 싶을 때 브레이크 페달을 밟는다.
자동차 내부 구조 및 회로에 대해서 고민하고 알아야 운전을 할 수 있는가?
추상화
- 시동을 건다.
- 기어를 D로 놓고 엑셀 페달을 밟는다.
- 기어를 R로 놓고 엑셀 페달을 밟는다.
- 브레이크 페달을 밟는다.
- ... 등등
구체화
- 시동을 걸면 배터리의 전력을 통해 엔진의 모터가 돌아간다.
- 기어를 변경하면, 각 기어에 맞게 구동축을 이동시킨다. (각각의 기어 위치도 알아야겠지?)
- 브레이크 페달을 밟으면, 유압이 올라가 ... 디스크를 잡아 마찰력을 높인다.
- ... 등등
추상화 덕분에 우린 굉장히 편리하게 살아갈 수 있다.
CASE : 인프라 구성
우리는 빠른 배포 환경을 구축하기 위해서 AWS 인프라를 사용한다. 손쉽게 Amazon EC2, AWS Lambda 등의 컴퓨팅 리소스를 빠르게 프로비저닝할 수 있다.
최근에 나는 추상화되어 있는 영역을 넘어 실제 구체를 다루기 위해, 홈서버를 구축했다. 왜 많은 사람들이 직접 구축하지 않는지를 알게되었다.
실제 물리적인 구성에 대한 고민을 해야하는가?
추상화
- Amazon EC2 메뉴에서 나에게 맞는 OS, 네트워크 설정을 간편하게 클릭하여 설정한다.
- 이것마저 귀찮다면 AWS Lambda로 손쉽게 프로비저닝한다.
- 그럼 알아서 어딘가 존재하는 HW로 서버가 만들어진다.
- ... 등등
구체화
- 서버로 사용할 PC의 견적을 맞추고, 주문한 뒤 배송받고 설치한다.
- VM 설정을 위해, 하이퍼바이저를 알맞게 (내 PC에 맞게) 설치하여 구성한다.
- 인터넷에서 접근할 수 있도록 다양한 네트워크 설정을 해준다. (DDNS, 방화벽 등)
- ... 등등