우리가 앱이나 프로그램을 사용할때 대부분의 경우에 인터넷을 필요로 합니다. 예를들어 넷플릭스앱에서 영화를 한편 보고싶을때에도 우리는 와이파이 혹은 셀룰러를 켜서 인터넷에 접속을 해야합니다. 이처런 우리는 인터넷을 필수로 사용해야 하는 경우가 대부분입니다. 하지만, 왜 우리는 인터넷을 사용해야 할까요? 그 이유는 앱이 필요로하는 정보를 서버로부터 받아오기 때문입니다.
데이터베이스에서 필요한 정보를 프로그램에 전달해 주는 것을 서버라고 부릅니다.
아래의 사진은 구글의 서버입니다.
이처럼 앱과 같은 프로그램들이 필요로 하는 리소스가 존재하는곳과 프로그램들을 분리시킨것을 클라이언트-서버 아키텍처라고 부릅니다. 다른말로 2티어 아키텍처라고도 불립니다.
보통의 경우 서버 자체는 위에서 언급했듯이 데이터베이스에서 정보를 전달해주는 역할을 합니다. 따라서 그 정보를 저장하고있는 장소가 따로 필요하고 우리는 그 장소를 데이터베이스라고 부릅니다. 여기서, 데이터베이스를 2티어 아키텍처에 추가하게되면 3티어 아키텍처라고 따로 불리게 됩니다.
앱의 사용자가 필요한 정보를 앱에 요청하게 되면 앱은 서버에 어떤 정보가 필요하다고 전달하게 되고 서버는 데이터베이스에서 그 정보를 빼내어 최종적으로 앱의 사용자가 그 정보를 획득하게 됩니다. 그렇다면 어떻게 그 정보를 달라고 요청할수 있을까요?
예를들어 우리가 미국여행을 가서 한국어로 주문을 하게되면 가게주인은 우리가 무엇을 원하는지 전혀 알아듣지 못할것 입니다. 미국에있는 가게에서는 영어로 주문을 해야겠죠.
이처럼 서버에 필요한 정보를 불러오고싶을때에도 특정한 규칙을 가지고 요청을 해야 원하는 정보를 받아올수 있습니다. 웹앱 아키텍처에서는 클라이언트-서버사이에 HTTP 프로토콜을 사용해서 통신을 합니다. API는 애플리케이션 프로그래밍 인터페이스의 약자로, 소프트웨어 개발에서 다른 애플리케이션과 상호 작용할 수 있도록 통신 규약을 제공합니다. API는 애플리케이션 간에 데이터를 교환하고 기능을 공유할 수 있도록 돕기 때문에 개발자들에게 매우 중요한 도구입니다.