본문 바로가기

반응형

백엔드

(178)
네트워크 - 프로토콜 - 규정이나 규약과 관련된 내용을 언급할 때 프로토콜이라는 용어를 사용 - 최근에는 이더넷-TCP/IP 기반 프로토콜들로 변경 물리적 측면 : 데이터 전송 매체, 신호 규약, 회선 규격 등, 이더넷이 널리 쓰인다. 논리적 측면 : 장치들끼리 통신하기 위한 프로토콜 규격. TCP/IP가 널리 쓰인다. -대부분의 프로토콜이 문자 기반이 아닌 2진수 비트 기반으로 만들어졌다. 따라서 매우 치밀하게 서로 간의 약속을 정의해야했다. - 애플리케이션 레벨의 프로토콜은 비트 기반이 아닌 문자 기반 프로토콜이 많이 사용. HTTP, SMTP 가 대표적. 문자 자체를 이용해 헤더와 헤더 값, 데이터를 표현. 효율성은 비트 기반보다 떨어지지만, 다양한 확장이 가능. - TCP/IP는 프로토콜이라고 부르지않고 프로토콜 스택..
네트워크 - 구성도 홈 네트워크 공유기가 대표적인 예시. 일반인도 손쉽게 네트워크를 구성할 수 있게 됨. 홈 네트워크 구성에는 모뎀, 공유기, 단말 간에 물리적 연결이 필요 무선 연결은 무선 랜 카드와 무선 신호를 보낼 수 있는 매체가 필요, 유선 연결은 유선 랜카드와 랜 케이블이 필요. 데이터 센터 네트워크 안정적이고 빠른 대용량 서비스 제공을 목표로 구성. 기존에는 3계층 구성이 일반적. 가상화 기술과 높은 대역폭을 요구하는 스케일 아웃 기반의 애플리케이션 서비스가 등장, 2계층 구성인 스파인 리프 구조로 데이터 센터 네트워크가 변화. 최근에는 일반 서버에 10G Base-T 이더넷 포트가 기본으로 제공. Top of Rack 스위치와 연결되고 리프 스위치인 TOR 스위치는 스파인 스위치와 40G, 100G로 연결되는 ..
스프링 - maven, gradle 비교하기 Maven - Maven은 Java용 프로젝트 관리도구로 Apache의 Ant 대안으로 만들어졌다. - 빌드 중인 프로젝트, 빌드 순서, 다양한 외부 라이브러리 종속성 관계를 pom.xml파일에 명시한다. - Maven은 외부저장소에서 필요한 라이브러리와 플러그인들을 다운로드 한다음, 로컬시스템의 캐시에 모두 저장한다. ​ - 예를 들어, "Spring Boot Data JPA Starter" 모듈을 사용하여 프로젝트를 개발하고 싶다면 메이븐레포지토리에서 해당 모듈을 검색하여 xml 설정파일에 추가하여 사용할 수 있다. (참고로 maven용 코드 이외에도 gradle용 코드도 탭에 있다.) Gradle ​ - Apacahe Maven과 Apache Ant에서 볼수 있는 개념들을 사용하는 대안으로써 나온 ..
스프링 - AOP AOP (Aspect Oriented Programming)란? - AOP는 Aspect Oriented Programming의 약자로 관점 지향 프로그래밍이라고 불린다. 관점 지향은 어떤 로직을 기준으로 핵심적인 관점, 부가적인 관점으로 나누어서 보고 그 관점을 기준으로 모듈화 하겠다는 것이다. *모듈화 : 어떤 공통된 로직이나 기능을 하나의 단위로 묶는 것 - 예를 들어 핵심적인 관점은 비즈니스 로직이 될 수 있고, 부가적인 관점은 핵심 로직을 실행하기 위해 행해지는 데이터베이스 연결, 로깅, 파일 입출력 등이 될 수 있다. AOP는 흩어진 관심사(Crosscutting Concerns)를 모듈화 할 수 있는 프로그래밍 기법이다 [그림 1] AOP 예시 [그림 1]과 같이 클래스 A, B, C에서 공..
스프링 - @Aspect 정의 - AOP를 가능하게 하는AspectJ에서 프로젝트에서 제공하는 어노테이션. - 자동 프록시 생성기는 Advisor를 찾아서 프록시를 생성하고 빈에 적용하는 역할을 수행합니다. 또한 자동 프록시 생성기는 또 다른 역할이 있는데 바로 @Aspect 어노테이션을 찾아서 해당 클래스를 Advisor(Pointcut + Advice)로 만들어줍니다. @Aspect를 Advisor 변환하는 과정 스프링 애플리케이션 로딩 시점에 자동 프록시 생성기 호출 자동 프록시 생성기가 스프링 컨테이너 내 @Aspect 어노테이션 붙은 스프링 빈 모두 조회 @Aspect 어드바이저 빌더를 통해 Advisor 생성 생성한 Advisor를 @Aspect 어드바이저 빌더 내부에 저장 * @Aspect 어드바이저 빌더는 Bean..
스프링 부트 - jar, war 차이 1. JAR? WAR? 기본적으로 JAR, WAR 모두 Java의 jar 옵션 (java -jar)을 이용해 생성된 압축(아카이브) 파일로, 애플리케이션을 쉽게 배포하고 동작시킬 수 있도록 관련 파일(리소스, 속성 파일 등)을 패키징 한 것이다. 자세한 정의는 아래와 같다. JAR (Java Archive) JAVA 어플리케이션이 동작할 수 있도록 자바 프로젝트를 압축한 파일 Class (JAVA리소스, 속성 파일), 라이브러리 파일을 포함함 JRE(JAVA Runtime Environment)만 있어도 실행 가능함 (java -jar 프로젝트네임.jar) 여러 개의 자바 클래스 파일과 클래스에서 필요로 하는 관련 리소스들 및 메타 데이털들을 하나의 파일로 모아서 자바 플랫폼에 응용 소프트웨어나 라이브러..
스프링 부트 - 스타터 종류 주요 스타터 spring-boot-starter-web-services : SOAP 웹 서비스 spring-boot-starter-web : Web, RESTful 응용프로그램 spring-boot-starter-test : Unit testing, Integration Testing spring-boot-starter-jdbc : 기본적인 JDBC spring-boot-starter-hateoas : HATEOAS 기능을 서비스에 추가 spring-boot-starter-security : 스프링 시큐리티를 이용한 인증과 권한 spring-boot-starter-data-jpa : Spring Data JPA with Hibernate spring-boot-starter-cache : 스프링 프레임워크..
스프링 부트란? 개요 자바의 웹 프레임워크로 기존 스프링 프레임워크에 톰캣 서버를 내장하고 여러 편의 기능들을 추가하여 꾸준한 인기를 누리고 있는 프레임워크. 스프링부트는 웹 프로그램을 쉽고 빠르게 만들어 주는 웹 프레임워크다 스프링부트는 웹 프로그램을 쉽고 빠르게 만들 수 있도록 도와주는 웹 프레임워크이다. 웹 프레임워크라는 표현을 처음 듣는 사람을 위해 잠시 웹 프레임워크를 설명해 보겠다. 웹 프레임워크란? 웹 프로그램을 만들어 본 경험이 있는가? 만약 그런 경험이 있다면 웹 프로그램을 위해 얼마나 많은 기능을 만들어야 하는지 잘 알고 있을 것이다. 예를 들어 쿠키나 세션 처리, 로그인/로그아웃 처리, 권한 처리, 데이터베이스 처리 등 웹 프로그램을 위해 만들어야 할 기능이 정말 산더미처럼 많다. 하지만 웹 프레임워..

반응형