[이노베이션 캠프] 5주차 개인 과제

김세포·2022년 8월 26일

Study Memo

목록 보기
6/6

Spring 심화 주차 키워드

📌 API란 무엇인가?

API는 Application Programming Interface(애플리케이션 프로그램 인터페이스)의 줄임말이며, 정의 및 프로토콜 집합을 사용하여 두 소프트웨어 구성 요소가 서로 통신할 수 있게 하는 메커니즘입니다. 예를 들어, 기상청의 소프트웨어 시스템에는 일일 기상 데이터가 들어 있습니다. 휴대폰의 날씨 앱은 API를 통해 이 시스템과 요청 및 응답을 하며 휴대폰에 매일 최신 날씨 정보를 표시합니다. API 문서에는 이러한 요청과 응답을 구성하는 방법에 대한 정보가 들어 있습니다.

📌 Client와 Sever란 무엇인가?

클라이언트서비스를 요청하는 이용자이고, 서버서비스를 제공하는 제공자의 역할을 하며 서로 정보를 주고 받는 관계 입니다.

📌 WAS란 무엇인가? Web Server와 차이점은 무엇인가?

웹 서버(Web Server)는 인터넷을 기반으로 클라이언트에게 웹 서비스를 제공하는 컴퓨터 입니다. 웹 서버에서는 html, css, 이미지 등 정적인 자료만 제공할 수 있어서 비즈니스 로직 처리나 DB연동의 문제는 어려운데 이를 해결하기 위해 등장한 것이 WAS 입니다. WAS(Web Application Server)는 웹 서버와 웹 컨테이너가 합쳐진 형태이며, 웹 어플리케이션을 실행시켜 필요한 기능을 수행하고 그 결과를 웹 서버에게 전달하는 일종의 미들웨어로 웹 서버 단독으로 처리할 수 없는 DB조회나 다양한 로직 처리가 필요한 동적 컨텐츠를 제공합니다.

📌 HTTP 프로토콜이란 무엇인가?

HTTP(Hypertext Transfer Protocol)는 하이퍼텍스트 기반으로(Hypertext) 데이터를 전송하겠다(Transfer) = 링크기반으로 데이터에 접속하겠다는 의미이며, 인터넷상에서 데이터를 주고 받기 위한 서버/클라이언트 모델을 따르는 프로토콜 입니다. HTTP는 어떤 종류의 데이터든지 전송할 수 있도록 설계되어 있으며, HTTP로 보낼 수 있는 데이터는 HTML문서, 이미지, 동영상, 오디오, 텍스트 문서 등 여러 종류가 있습니다.

📌 Restful API는 무엇인가?

REST(Representational State Transfer)란 어떤 자원에 대해 CRUD(Create, Read, Update, Delete) 연산을 수행하기 위해 URI(Resource)로 요청을 보내는 것인데, GET, POST, PUT, PATCH, DELETE의 Method를 사용하여 요청을 보내며 요청을 위한 자원은 특정한 형태로 표현됩니다. 이러한 REST 기반의 API를 웹으로 구현한 것RESTful API 입니다.


DIY

📌 AOP란 무엇인가?

AOP(Aspect Oriented Programming)는 한국에서 관점 지향 프로그래밍, 또는 상황중심 프로그래밍으로 번역되는 하나의 프로그래밍 방법론입니다. AOP는 절차적 프로그래밍이나 객체 지향 프로그래밍처럼 그 자체로 하나의 프로그램을 형성할 수 있는 건 아니지만 객체 지향 코드 위에서 이루어지며 객체 지향을 보조하는 역할을 한다고 보면 됩니다. 객체 지향 방식의 장점 중 하나는 프로그램을 모듈화 시켜 이를 재활용함으로써 코드의 중복을 줄이고 코드의 재사용성을 높이는 것인데, 프로그램의 크기가 엄청나게 커지면서 이러한 모듈 안에서마저 중복되는 코드가 생기게 됩니다. 이를 횡단 관심사(Crosscutting-Concerns)라고 하며, 그 중 자주 언급되는 것이 바로 트랜잭션, 로깅, 성능 분석 등입니다. AOP의 목적은 바로 이러한 횡단 관심사를 모듈화 하는 방법을 제시하는 것이고, 이를 통해 코드의 중복을 제거하여 이해하기 쉽도록 하고, 프로그램의 작성을 수월하게 해 유지보수를 편리하게 할 수 있습니다.

📌 JPA Data Query, QueryDSL이란 무엇인가?

Spring Data JPA는 스프링에서 JPA(Java Persistence API)를 편리하게 사용할 수 있도록 그에 대한 Repository를 제공해서 JPA Data Source에 대한 접근이 필요한 어플리케이션 개발을 용이하게 합니다. 하지만 복잡한 쿼리, 동적 쿼리는 문자열에 오타 혹은 문법적인 오류가 존재하는 경우 런타임 시점에서 에러가 발생해 그 전에 오류를 잡아내기 힘든데, 이러한 문제에 도움을 줄 수 있는 프레임워크를 QueryDSL이라고 합니다. QueryDSL은 정적 타입을 이용해서 SQL 등의 쿼리를 생성해주며, 자바코드로 작성하기 때문에 문법오류를 컴파일 시점에 잡아낼 수 있고 쿼리 작성 시 제약 조건 등을 메서드 추출을 통해 재사용 할 수 있다는 장점이 있습니다.

📌 HTTP Method에서 GET과 POST의 차이점은 무엇인가?

GET은 URL 파라미터에 요청하는 데이터를 담아 보내기 때문에 HTTP 메시지에 Body가 없는 반면에 POST는 Body에 데이터를 담아 보내기 때문에 당연히 HTTP 메시지에 Body가 존재합니다. GET은 리소스를 조회한다는 점에서 여러 번 요청하더라도 응답이 같지만 POST는 리소스를 새로 생성하거나 업데이트할 때 사용하기 때문에 서버가 변경될 수 있다는 차이점이 있습니다.

📌 HTTP와 HTTPS의 차이점은 무엇인가?

HTTP는 서로 다른 시스템들 사이에서 통신을 주고받게 해주는 가장 기초적인 프로토콜 이며, 인터넷 초기에 모든 웹 사이트에서 기본적으로 사용되었던 프로토콜 이기도 합니다. 하지만 서버에서부터 브라우저로 전송되는 정보가 암호화되지 않아 데이터가 쉽게 도난당할 수 있다는 단점이 있어, 이러한 단점을 해결하기 위해 HTTPS가 등장 했습니다. HTTPS 프로토콜은 서버와 브라우저 사이에 암호화된 연결을 만들 수 있게 도와주는 SSL을 사용함으로써 서버 브라우저가 민감한 정보를 안전하게 주고받을 수 있게 합니다.

📌 Monolithic과 MSA는 무엇인가?

Monolithic Architecture는 한 덩어리로 뭉쳐진 단일 서비스 개발 방식이며, 하나의 프로젝트로 구성되어 단일 패키지로 배포하는 아키텍쳐 입니다. 통합 시나리오 테스트가 수월하고 배포가 간단해 소규모 프로젝트에 적합합니다. 하지만 그만큼 서비스가 커짐에 따라 빌드 및 테스트의 시간이 오래 걸리고 선택적으로 확장이 불가능하다는 단점이 있습니다. MSA(MicroService Architecture)하나의 큰 어플리케이션을 여러 개의 작은 어플리케이션으로 쪼개어 배포하는 아키텍쳐이며, 독립적인 기능을 수행하는 작은 단위의 서비스로 나누어 개발하는 것을 말합니다. 배포 시에 전체 서비스 중단이 필요 없으며 CI(지속적인 통합) / CD(지속적인 배포)가 수월하고 서비스가 분리되어 있어 부분적인 장애에 대해서 격리 및 대처가 수월합니다. 그렇기에 대형 프로젝트에 적합하고, 트래픽을 많이 요구하는 곳에서 주로 사용하지만 서비스가 분리되어 있어 트랜잭션과 테스트가 복잡하며, 서비스 간 호출 시 API를 이용하기 때문에 통신 비용과 지연시간이 증가 한다는 단점이 있습니다.

profile
이제서야 겨우 만들어진 개발세포

0개의 댓글