For job interview, about Web 면접 공부하기-웹 2
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와의 차이점
좌측이 OOP, 우측이 AOP이다. 기존의 OOP로직의 흐름은 계정, 게시판, 계좌이체를 처리할 때마다 똑같이 권한, 트랜잭션, 로깅을 처리해야하기 때문에 모든 로직에 똑같은 코드가 반복적으로 삽입될 수 밖에 없다. 하지만, AOP는 이러한 관심(권한, 로깅, 트랜잭션)을 종단으로 삽입할 수 있도록 해준다.
※ 참고 : 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, 위키백과