기술적 질문 1 - OOP, REST API

Quann·2023년 3월 27일
0

1. 객체지향 프로그래밍(OOP)에 대해 설명해주세요. 알고있는 원칙이나 키워드를 언급해주세요

객체지향 프로그래밍은 프로그래밍의 한 방법론으로, 프로그램을 여러 개의 독립된 객체들이 서로 상호작용하는 방식으로 구성하는 것을 목표로 합니다. 각 객체는 데이터와 함수(메소드라고도 함)를 포함하고, 이를 이용해 다른 객체와 소통하거나 처리를 수행합니다.

객체지향 프로그래밍의 핵심 원칙은 다음과 같습니다.

캡슐화(Encapsulation): 객체의 내부 데이터와 함수를 외부에서 접근하지 못하도록 숨기고, 외부에 노출할 메소드만 제공함으로써 구현의 세부 사항을 숨기는 원칙입니다.

상속(Inheritance): 클래스 간의 계층 구조를 통해 속성과 메소드를 재사용할 수 있도록 하는 원칙입니다. 하위 클래스가 상위 클래스의 특징을 물려받아 코드 중복을 줄이고 유지 보수를 용이하게 합니다.

다형성(Polymorphism): 같은 이름의 메소드가 다양한 형태의 객체에 대해 서로 다른 동작을 수행할 수 있는 원칙입니다. 이를 통해 유연하고 확장 가능한 코드를 작성할 수 있습니다.

추상화(Abstraction): 복잡한 시스템을 더 간단한 개념으로 표현하고, 필요한 정보와 기능만을 포함하여 사용자와 상호작용할 수 있도록 하는 원칙입니다.

객체지향 프로그래밍의 키워드는 클래스(Class), 인스턴스(Instance), 메소드(Method), 속성(Attribute) 및 상속(Inheritance) 등이 있습니다. 이러한 원칙과 키워드를 이해하고 적용하면 프로그램의 유지 보수성, 확장성 및 재사용성을 향상시킬 수 있습니다.

++ SOLID


2.1. REST API란 무엇인가요?

REST API는 "Representational State Transfer Application Programming Interface"의 약자로, 웹 기반의 서비스와 애플리케이션 간에 데이터를 주고받을 수 있는 간단하고 표준화된 방법입니다. REST는 웹 아키텍처 스타일 중 하나로, 쉽게 말해 클라이언트와 서버 간의 통신을 위한 규약이라고 볼 수 있습니다. REST API는 일반적으로 HTTP 프로토콜을 사용하며, JSON, XML 등의 형식으로, 간결하고 표준화된 방법으로 자원(예: 데이터 객체)에 접근할 수 있습니다.

2.2. 프로젝트에 REST API를 사용한 이유가 무엇인가요?

표준화된 방식: REST는 웹에서 널리 사용되는 HTTP 프로토콜을 기반으로 하기 때문에, 개발자들이 쉽게 이해하고 사용할 수 있습니다.
높은 확장성: REST 아키텍처는 클라이언트와 서버 간의 결합도를 낮춰주어, 시스템의 확장성을 높입니다.
캐싱 기능: HTTP 프로토콜의 캐싱 기능을 사용하여, 서버의 부하를 줄이고 응답 시간을 개선할 수 있습니다.
다양한 데이터 형식 지원: REST API는 JSON, XML 등 다양한 데이터 형식을 지원합니다. 이를 통해 클라이언트와 서버 간에 원하는 형식으로 데이터를 주고받을 수 있습니다.

2.3. REST API 말고 다른 비교할만한 것을 알고 있나요?

  • SOAP(Simple Object Access Protocol)은 웹 서비스 통신을 위한 표준 프로토콜로, XML 기반의 메시지 형식을 사용합니다. 하지만 복잡한 구조와 무거운 메시지로 인해 오늘날에는 REST API가 더 선호됩니다.

  • 이 외에도 GraphQL 같은 쿼리 언어도 있습니다. GraphQL은 페이스북에서 개발한 데이터 질의 언어로, 클라이언트가 필요한 데이터를 정확하게 요청할 수 있도록 해줍니다. 주요 차이점은 다음과 같습니다

  • REST는 엔드포인트를 사용하여 데이터에 접근하지만, GraphQL은 단일 엔드포인트를 통해 모든 요청을 처리합니다.

  • GraphQL은 클라이언트가 필요한 데이터를 정확하게 요청할 수 있어 과도한 데이터 전송이나 추가 요청을 줄일 수 있습니다.

  • GraphQL은 타입 시스템을 사용해 데이터의 구조를 명확하게 정의하며, 이를 통해 클라이언트와 서버 간의 약속을 명확하게 설정할 수 있습니다.

  • 또한, gRPC는 구글이 개발한 프로토콜로, HTTP/2를 사용하며, 효율적인 데이터 전송을 위해 Protocol Buffers라는 이진 형식을 사용합니다. gRPC는 빠른 속도와 서비스 간의 강력한 상호 작용을 제공하지만, REST API보다는 학습 곡선이 높고, 셋팅이 복잡할 수 있습니다.

  • 이처럼 REST API, SOAP, 그리고 GraphQL은 각각의 장단점을 가지고 있으며, 프로젝트의 요구사항과 개발 환경에 따라 적절한 기술을 선택할 수 있습니다.

profile
코드 중심보다는 느낀점과 생각, 흐름, 가치관을 중심으로 업로드합니다!

0개의 댓글