모든 내용은 아직 초보인 제가 스스로 학습하며 알게된 정보와 그에 대한 제 견해가 섞여있기 때문에 공식적이거나 정확한 정보가 아닙니다. 부족한 부분이 있다면 날카로운 지적들 주시면 감사하겠습니다 :)
REST API 개발을 Spring Boot 를 통해 시작하려고 했을 때 내가 정확히 뭘 하겠다는 건지조차 몰랐다. Controller 를 만들고, Service 를 만들고 JPA를 쓰는 것이 REST API 를 만드는 것인가 하는 막연한 의문이 있었다.
API를 만든다는 것은 곧 서로 다른 소프트웨어 시스템간의 '소통 방식'을 정의한다는 것이다. 가장 흔하게 생각할 수 있는 것이 프론트엔드와 백엔드간의 소통 방식을 정의하는 것이다.
RESTful API 개발을 한다는 것은 곧 REST 란 약속대로 API 개발을 한다는 것이다. 다만 오늘날 너무나 보편적으로 사용되기 때문에 마치 API = REST API 와 같이 인식되는 것이다. RESTful API 란 그저 API 가 RESTful 하게 만들어졌다는 의미로 생각하면 된다.
RESTful API 를 어떻게 만드는 건지는 너무나 많은 자료들이 이미 있기 때문에 그 내용에 대해서는 다루지 않겠다.
백엔드 개발가 되고 싶다고 하면서 백엔드가 정확히 뭔지도 모르면서 입만 털어왔다. 서버와 백엔드도 구분할 줄 몰랐다. REST API 프로젝트를 시작하면서는 API 개발이 곧 백엔드 개발인 줄 알았다;...
먼저 백엔드란 용어에만 집중하기 보다는, 이것의 근원인 웹 어플리케이션 개발로부터 바라봐야 한다. client-server 관계로 웹 어플리케이션 개발을 볼 때에, 프론트엔드와 백엔드의 구분의 이유를 알 수 있다.
내가 만든 웹 어플리케이션이 있다면 client 의 요청을 받기 위한 소통 방식을 구축해야 하며, 소통을 통해 받은 요청에 대해 응답해야 하고, 그 과정에서 파생되는 데이터 및 데이터 가공 로직을 구축해야 할 것이다. 이 작업들을 하는 것이 곧 백엔드 개발인 것이다.
백엔드 개발의 여러 작업 중 하나로 API 개발 이 있는 것이다!
그렇다면
어떠한 데이터들을 수집하고 그에 대한 로직들을 수행할지는 먼저 기반을 잡고, 그에 적절한 API 개발을 하는 것이 바람직한 순서라고 chatGPT 가 알려준다. 사실 질문을 하고 나서도 내가 충분한 경험이 없어서인지 이 대답이 가슴 깊이 와닿지는 않는다.
Is developing API dependent on developing backend for a specific web application?
Yes, developing an API is often dependent on developing a backend for a specific web application. The backend is responsible for handling the data and logic that the API provides access to, so the two components are closely tied together.
An API is essentially a way for other applications or systems to interact with the backend of a web application. It defines the endpoints, methods, data formats, and security mechanisms that will be used for communication, and provides a way for external systems to access and manipulate the data stored in the backend.
Therefore, in order to develop a functional API, the backend must be developed first, and the API must be designed to work with the specific backend components and data structures. The backend provides the data and logic that the API will be providing access to, and the API acts as a bridge between the backend and external systems.
In short, developing an API is often dependent on developing a backend, as the backend provides the data and functionality that the API enables other systems to access and interact with.
더 많은 경험을 쌓으며 저 질문에 대한 대답을 누군가에게 물어볼 필요없이 나의 경험을 바탕으로 대답할 수 있는 날을 위해 열심히 달려야지.