티스토리 뷰

1. REST란 무엇이고, RESTful하게 API를 디자인한다는 것은 무엇인지 설명하시오.

👉🏻 REST는 Representational State Transfer의 약자입니다. 간단히 말해서 URI와 HTTP 메소드를 이용해 객체화된 서비스에 접근하는 것입니다. REST의 요소로는 크게 리소스, 메소드, 메세지 3가지 요소로 구성됩니다. 예를 들어 "이름이 Tom인 사용자를 생성한다." 라는 호출이 있을 때 "사용자"는 생성되는 리소스, "생성한다."라는 행위는 메소드, 그리고 "이름이 Tom인 사용자"는 메세지가 됩니다. 즉 리소는 http://myweb/users라는 형태의 URI로 표현되며, 메소드는 HTTP Post, 메세지는 JSON 문서를 이용해서 표현됩니다. HTTP에는 여러가지 메소드가 있지만 REST에서는 CRUD에 해당하는 4가지의 메소드 GET, POST, PUT, DELETE를 사용합니다. REST는 리소스 지향 아키텍쳐 스타일이라는 정의에 맞게 모든 것을 명사로 표현하며 각 세부 리소스에는 id를 붙입니다. 

👉🏻 Restful하게 API를 디자인한다는 것은 URI를 규칙에 맞게 잘 설계했는지의 여부입니다. 규칙의 항목으로는 아래와 같습니다.

1. 동일한 URI(End point)의 행위에 맞게 POST, GET, DELETE, PATCH등의 메소드를 사용한다.
2. 명사를 사용한다. 리스트를 표현할 때는 복수형을 사용한다.
3. URI Path에 불필요한 파라미터를 넣지 않는다. 즉, 단계를 심플하게 설계한다.

 

 

2. Git이 무엇인지 설명하고 프로젝트에서 깃허브를 사용했다면 어떤 식으로 기여했는지 설명하시오.

👉🏻 git이란 형상 관리 도구 중 하나입니다. 소프트웨어를 개발하는 기업의 핵심 자산인 소스코드를 효과적으로 관리할 수 있게 해주는 공개 소프트웨어입니다. Github는 대표적인 형상 관리 도구 웹호스팅 서비스입니다. 프로젝트에서는 Git GUI 중 하나인 Github Desktop을 사용하여 버전 관리를 했습니다. 각 팀원 별로 브랜치를 생성하여 체계적인 Pull Request와 merge를 통해 프로젝트를 업데이트 했습니다. 기본적인 pull, push, commit을 사용하여 항상 최신 버전으로 유지할 수 있도록 운영했습니다. 

(+) Git의 장점

1. 소스코드를 주고 받을 필요 없이, 같은 파일을 여러명이 동시에 작업하는 병렬 개발이 가능하다.
2. 브랜치를 통해 개발한 뒤, 본 프로그램에 합치는 방식(merge)으로 개발을 진행할 수 있다.
3. 분산 버전관리이기 때문에 인터넷이 연결되지 않은 곳에서도 개발을 진행할 수 있으며 중앙 저장소가 날아가버려도 다시 원상복구 할 수 있다.
4. 팀 프로젝트가 아닌, 개인 프로젝트일지라도 Git을 통해 버전 관리를 하면 체계적인 개발이 가능해지고, 프로그램이나 패치를 배포하는 과정도 간단해진다. (pull을 통한 업데이트, patch 파일 배포) 

 

 

3. 프레임워크의 특징과 프레임워크와 라이브러리 차이점은 무엇인지 설명하시오. 

👉🏻 Framework란 소프트웨어 환경에서 복잡한 문제를 해결하거나 서술하는데 사용되는 기본 개념 구조입니다. 뼈대가 되는 부분을 미리 구현한 클래스, 인터페이스 , 메소드 등의 모음이라고 할 수 있습니다. 프레임워크는 설계자가 의도한 여러 디자인 패턴으로 구성되어 있습니다. 따라서 개발자가 에플리케이션의 구조적 설계를 신경 쓸 필요가 없습니다. 또한 일정 수준 이상의 품질을 보증하는 코드를 비교적 빠르고 편하게 완성 및 유지보수할 수 있는 솔루션이라고 할 수 있습니다. 

👉🏻 라이브러리와 프레임워크는 애플리케이션의 틀과 구조를 결정한다는 측면에서 활용도가 상당히 유사하나 라이브러리는 특정 기능이 필요할 때 호출해서 쓰는 도구 모음입니다. 프레임워크가 큰 뼈대는 이미 잡혀있고 그 안의 내용물을 채우는 느낌이라면 라이브러리는 개발자가 호출해서 능동적으로 사용하는 것이라고 볼 수 있습니다. 즉, 프레임워크는 꼭 써야되는 것과 지켜야되는 룰이 있는 반면 라이브러리는 쓰든 안쓰든 개발자 마음대로 할 수 있다는 점에서 차이가 있습니다. 

(+) Spring Framework

  • 자바(JAVA) 플랫폼을 위한 오픈소스 애플리케이션 프레임워크
  • 자바 엔터프라이즈 개발을 편하게 해주는 오픈소스 경량급 애플리케이션 프레임워크
  • 자바 개발을 위한 프레임워크로 종속 객체를 생성해주고, 조립해주는 기구
  • 자바로 된 프레임워크로 JavaSE로 된 자바 객체(POJO)를 JavaEE에 의존적이지 않게 연결해주는 역할

특징

  • 크기와 부하의 측면에서 경량
  • 제어 역행(IOC)이라는 기술을 통해 애플리케이션의 느슨한 결합을 도모.
  • 관점 지향 프로그래밍(AOP)을 위한 풍부한 자원
  • 애플리케이션 객체의 생명주기와 설정을 포함하고 관리한다는 점에서 일종의 컨테이너라고 할 수 있음
  • 간단한 컴포넌트로 복잡한 애플리케이션을 구성하고 설정할 수 있음

 

 

4. Spring AOP가 무엇인지 OOP와 AOP를 비교하여 설명하시오.

👉🏻 AOP는 Aspect Oriented Programming의 약자로, 관점 지향 프로그래밍이라고 합니다. 애플리케이션의 핵심적인 기능과 부가적인 기능을 분리해 Aspect라는 모듈로 만들어 설계하고 개발하는 방법입니다. OOP는 Object Oriented Programming의 약자로 객체 지향 프로그래밍이라고 합니다. OOP와 AOP는 서로 상반되는 개념은 아니며 오히려 OOP를 더욱 OOP답게 사용할 수 있도록 하는 것이 AOP입니다.

공통적 기능을 모든 모듈에 적용하기 위한 방법으로 상속을 이용하는데 Java에서는 다중 상속이 불가능합니다. 그리고 기능 구현 부분에서 핵심 코드와 공통 기능 코드가 섞여있어서 보기에도 불편하고, 효율성이 떨어집니다. 이러한 이유로 AOP가 등장했습니다.

💡 주요 용어 

  • Aspect - 공통 기능 / Advice와 Pointcut을 합친 개념
  • Advice - Aspect의 기능 자체 / 무엇을 삽입할 것인가? / 부가적인 기능(횡단적 관심)을 정의한 코드
  • Joinpoint - Advice를 적용해야 하는 부분. 즉, 어떤 시점에 삽입할 것인지에 대한 특정 위치. 
    1. before : 메소드 실행 전  2. after : 메소드 실행 후
    3. AfterReturning : 반환된 후  4. AfterThrowing : 예외가 던져지는 시점
    5. around : 메소드 실행 전, 후
  • Pointcut - Joinpoint의 부분으로 실제 Advice가 적용된 부분 / 어떤 클래스의 어떤 메소드에 어느 joinpoint를 사용할 것인가?
  • Weaving - Advice를 핵심기능에 적용하는 행위 / AOP가 기존의 핵심 관심 모듈의 코드에 전혀 영향을 주지 않으면서 필요한 횡단 관심 기능을 추가할 수 있게 해주는 핵심적인 처리 과정. 
  • Proxy - Client와 Target 사이에 존재하면서 부가기능을 제공하는 object / Aspect가 곧바로 핵심 기능에서 실행되는 것이 아니라, proxy(대행자)에서 공통 기능이 수행하도록 하는 것. 

 

 

5. Oracle과 MySQL의 차이점에 대해 설명하시오.

👉🏻 Oracle은 대규모 트랜잭션 로드를 처리하고 성능을 최적화하기 위해 여러 서버에 대용량 DB분산 절차적 언어를 통해 DB에 내장된 프로그램의 작성을 지원합니다. MySQL은 단일 DB로 제한되어 있어, 매일 수백만번 액세스하는 대용량 DB에는 부적합합니다. DB를 이전 상태로 복원하는데 도움이 되는 저장점이 없고 COMMIT과 ROLLBACK만 존재합니다. 

댓글
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30