For job interview, about Web 면접 공부하기-웹 2

2 minute read

1. 라이브러리와 프레임워크의 차이

1. Library 라이브러리

  • 재사용이 필요한 기능으로 반복적인 코드 작성을 없애기 위해 언제든지 필요한 곳에서 호출하여 사용할 수 있도록 class나 function으로 만들어진 것이다.
  • e.g. jQuery, React.js

2. Framework 프레임워크

  • 원하는 기능 구현에만 집중하여 빠르게 개발할 수 있도록 기본적으로 필요한 기능을 갖추고 있는 것으로 라이브러리가 포함되어 있다.
  • 프레임워크만으로는 실행되지 않으며 기능 추가를 해야 되고 프레임워크에 의존해 프레임워크가 정의한 규칙을 준수해야 한다.
  • e.g. Spring, Angular.js, Vue.js, Django



2. 로그와 디버깅의 차이

  • Log 로그 : 에플리케이션의 상태를 관찰할 수 있도록 에플리케이션이 제공하는 정보
  • Debugging 디버깅 : 에플리케이션의 오류를 제거하거나 억제하는 행위



3. 브라우저 별 특징

1. Internet Explorer 인터넷 익스플로러

  • 마이크로소프트에서 개발한 윈도우 운영체제를 위한 브라우저
  • 한국의 경우 ActiveX 등의 보안 프로그램이 익스플로러에서만 실행되는 경우가 많다.
  • 렌더링 엔진 : 트라이던트 Trident

2. Chrome 크롬

  • 구글에서 개발한 브라우저
  • 빠른 속도와 확장성이 장점이다. 구글과 연동되므로 구글 계열의 제품인 Google Docs, Gmail, Youtube 등과 연계된다.
  • 각 탭 tab 을 별개의 프로세스로 관리하므로 메모리를 많이 차지한다. (예를 들면 탭을 2개 열면 크롬 2개가 구동된다.)
  • 렌더링 엔진 : 비링크 Blink

3. Firefox 파이어폭스

  • 비영리 재단 모질라에서 개발한 브라우저
  • NSA(미국 국가안보국)와 협력하지 않기 때문에 개인정보 유출에 대해 걱정하지 않아도 된다.
  • 탭 브라우징에 신경을 많이 써 다양한 탭 관련 기능이 있다.
  • 렌더링 엔진 : 게코 Gecko

4. Safari 사파리

  • 애플에서 개발한 브라우저
  • PC 점유율은 높지 않지만 애플의 모바일 기기에 기본으로 내장되어 있기 때문에 점유율이 상당히 높아 웹 개발 시 무시할 수 없다.
  • 렌더링 엔진 : 웹킷 WebKit



4. Spring Framework 스프링 프레임워크

  • Definition 정의
    • 자바 플랫폼을 위한 오픈소스 애플리케이션 프레임워크로서 간단히 스프링이라고도 불린다. 대한민국 공공기관의 웹 서비스 개발 시 사용을 권장하고 있는 전자정부 표준프레임워크의 기반 기술로서 쓰이고 있다.
  • Features 특징
    • POJO(Plain Old Java Object) : 일반적인 J2EE 프레임워크에 비해 구현을 위해 특정한 인터페이스를 구현하거나 상속을 받을 필요가 없어 기존에 존재하는 라이브러리 등을 지원하기에 용이하고 객체가 가볍다.
    • IoC(Inversion of Control) 제어의 반전 : 객체 간 의존 관계를 제어하는 권한이 개발자에서 컨테이너 container 에게 넘어간 것을 말한다. 다른 곳에서 생성된 클래스를 가져와서 사용하는 방법으로, 컨테이너에서 관리되고 있는 객체를 개발자가 필요할 때 코드 주입을 통해 사용하는 것을 말한다.
    • ★ DI(Dependency Injection) 의존성 주입 : 각각의 계층이나 서비스(= class)들 간에 의존성이 존재할 경우 빈 Bean 설정 정보를 바탕으로 컨테이너(프레임워크)가 자동으로 서로 연결시켜주는 것을 말한다.
    • AOP(Aspect-Oriented Programming) 관점지향 프로그래밍 : 트랜잭션이나 로깅, 보안과 같이 여러 모듈에서 공통적으로 사용하는 기능의 경우 해당 기능을 분리하여 관리하는 것을 말한다.



5. AOP vs OOP

1. Aspect-Oriented Programming 관점지향 프로그래밍

  • Definition 정의 : 횡단 관심사 corss-cutting concerns 의 분리를 허용함으로써 모듈성을 증가시키는 것이 목적인 프로그래밍 패러다임이다.
  • Features 특징
    • 기존의 코드 자체를 수정하지 않고 대신 기존의 코드에 추가 동작(advice: 실제로 AOP 기능을 구현한 객체)을 추가함으로써 수행하며, ‘함수의 이름이 set으로 시작하면 모든 함수 호출을 기록한다’와 같이, 어느 코드가 포인트컷 pointcut 사양을 통해 수정되는지를 따로 지정한다.
    • 기능의 코드 핵심부를 어수선하게 채우지 않고도 비즈니스 로직에 핵심적이지 않은 동작들을 추가할 수 있다.
    @ Pointcut 포인트컷 :

    어드바이스가 적용될 수 있는 위치를 선별하는 과정이나 그 기능을 정의한 모듈

2. OOP와의 차이점

AOP
좌측이 OOP, 우측이 AOP이다. 기존의 OOP로직의 흐름은 계정, 게시판, 계좌이체를 처리할 때마다 똑같이 권한, 트랜잭션, 로깅을 처리해야하기 때문에 모든 로직에 똑같은 코드가 반복적으로 삽입될 수 밖에 없다. 하지만, AOP는 이러한 관심(권한, 로깅, 트랜잭션)을 종단으로 삽입할 수 있도록 해준다. OOPvsAOP



※ 참고 : https://blog.gaerae.com/2016/11/what-is-library-and-framework-and-architecture-and-platform.html, https://nuee.tistory.com/14, https://12bme.tistory.com/208, https://meetup.toast.com/posts/92, https://tmondev.blog.me/220391644590?Redirect=Log&from=postView, https://kslee7746.tistory.com/entry/Spring-%ED%95%B5%EC%8B%AC%EA%B0%9C%EB%85%90IoC-DI, https://doublesprogramming.tistory.com/115, http://blog.naver.com/PostView.nhn?blogId=tmondev&logNo=220556587811, 위키백과

Tags:

Updated: