다시 웹, 백엔드로 51

Spring Boot 시작하기

Spring Boot 시작하기Spring Boot 는 프로덕션 제품 수준의 스프링 기반 어플리케이션을 만들 수 있음Spring 구성이 거의 필요하지 않음java -jar 로 실행하는 Java 어플리케이션을 만들 수 있음  특징Spring 개발에 대해 빠르고, 광범위하게 적용할 수 있는 환경기본값 설정이 되어있으며 변경할 수 있음대규모 프로젝트에 공통적인 비 기능 제공 (보안, 모니터링 등)XML 구성 요구사항이 없음  https://start.spring.io   Spring Boot REST API프로젝트 생성  ⁉️ 서버 port 를 변경하려면   GET 요청 받기 스프링에서 컨트롤러 작성시키기 위해서는 클래스를 만들어야 함작성한 클래스 위에 @RestController 어노테이션을 붙여줘야함주소를 ..

웹 개발 개론

웹 개발이란? Web의 3요소 URI (Uniform Resource Identifier): 리소스 식별자, 특정 사이트, 특정 쇼핑 목록, 동영상 목록, 모든 정보에 접근 할 수 있는 정보 HTTP (Hypertext Transfer Protocol): 어플리케이션 컨트롤 GET POST PUT DELETE OPTIONS HEAD TRACE CONNECT HTML (Hyper Text Markup Language): 하이퍼미디어 포맷, xml을 바탕으로한 범용 문서 포맷, chrome/safari/explorer 에서 사용자가 알아보기 쉬운 형태로 표현 REST REST (Representational State Transfer: 자원의 상태 전달) - 네트워크 아키텍처 Client, Server: 클..

액츄에이터

운영 환경에서 서비스할 때 필요한 이런 기능들을 프로덕션 준비 기능이라 함 프로덕션을 운영에 배포할 때 준비해야 하는 비 기능적 요소들을 뜻함 지표(metric), 추적(trace), 감사(auditing) 모니터링 스프링 부트가 제공하는 액추에이터는 이런 프로덕션 준비 기능을 매우 편리하게 사용할 수 있는 다양한 평의 기능들을 제공함 액츄에이터는 /actuarot 경로를 통해 기능을 제공함 이 기능은 현재 서버가 잘 동작하고 있는지 애플리케이션의 헬스 상태를 나타냄 액츄에이터 기능을 웹에 노출 액츄에이터가 제공하는 수 많은 기능을 확인 할 수 있음 제공하는 기능을 엔드포인트라 함 health 는 헬스 정보, beans는 스프링 컨테이너에 등록된 빈을 보여줌 각각의 엔드포인트는 /actuator/{엔드포..

YAML / @Profile

YAML YAML (YAML Ain't Markup Language) 사람이 읽기 좋은 데이터 구조를 목표로 함 확장자는 yaml, yml application.properties 예시 environments.dev.url=https://dev.example.com environments.dev.name=Developer Setup environments.prod.url=https://another.example.com environments.prod.name=My Cool App application.yml 예시 environments: dev: url: "https://dev.example.com" name: "Developer Setup" prod: url: "https://another.examp..

@ConfigurationProperties 검증

@ConfigurationProperties 검증 최대 커넥션 숫자는 최소 1 최대 999라는 범위를 가져야 한다면 검증을 어떻게 할 수 있을까? 자바에는 자바 빈 검증기 (java bean validation) 이라는 표준 검증기가 제공됨 자바 빈 검증기를 사용하려면 spring-boot-starter-validation 이 필요함 @NotEmpty 어노테이션: 항상 값이 있어야 함 @Min(1) @Max(999) 어노테이션: 최소 1, 최대 999의 값을 허용 @DurationMin(seconds = 1) @DurationMin(seconds = 60) 어노테이션: 최소 1, 최대 60초를 허용 MyDataSourceConfigV3 생성 및 ExternalReadApplication.java 수정 m..

외부설정사용 - @ConfigurationProperties 생성자

외부설정사용 - @ConfigurationProperties 생성자 @ConfigurationProperties는 생성자를 통해서 객체를 만드는 기능을 지원 생성자를 만들어 두면 생성자를 통해서 설정 정보를 주입함 @Getter 가 자동으로 getter를 만들어줌 @DefaultValue: 해당 값을 찾을 수 없는 경우 기본값을 사용 etc를 찾을 수 없는 경우: Etc 객체를 생성하고 내부에 들어가는 값을 비워둠 (null, 0) option 을 찾을 수 없는 경우: DEFAULT라는 이름의 값을 사용 실행 결과 application.properties 에 필요한 외부 설정을 추가하고, @ConfigurationProperties 의 생성자 주입을 통해서 값을 읽어들임, Setter 가 없으므로 개발자..

외부 설정 사용 - @ConfigurationProperties

외부 설정 사용 - @ConfigurationProperties Type-safe Configuration Properties 스프링은 외부 설정의 묶음 정보를 개체로 변환하는 기능을 제공함, 타입 안전한 설정 속성 객체를 사용하면 타입을 사용할 수 있음, 잘못된 타입 입력 방지 등 활용할 수 있는 부분들이 많아짐 설정 정보 그 자체도 타입을 가지게 됨 외부 설정을 주입 받을 객체를 생성, 각 필드의 외부 설정의 키 값에 맞춰서 준비 @ConfigurationProperties 어노테이션이 있으면 외부 설정을 주입 받는 객체라는 뜻 기본 주입 방식은 자바빈 프로퍼티 방식 @EnableConfigurationProperties(MyDataSourcePropertiesV1.class) 스프링에게 사용할 @C..

외부 설정 사용 - @Value

외부 설정 사용 - @Value @Value 어노테이션을 사용하면 외부 설정값을 편리하게 주입받을 수 있음 @Value 에 ${ } 를 사용해서 외부 설정의 키 값을 주입 받을 수 있음 @Value 는 필드에서 사용할 수 있고, 파라미터에 사용할 수도 있음 기본값 키를 찾지 못할 경우 기본값을 사용하려면 : 뒤에 기본값을 적어주면 됨 @Value("${my.datasource.etc.max-connection:1}") 실행 스프링 빈을 2개 등록해서 같은 결과가 두번 나옴 하나하나 외부 설정 정보의 키값을 입력받고 주입을 받아야함 정보의 묶음으로 되있어 객체로 변환해서 사용할 수 있다면 편리할 것 feat. 스프링부트 - 핵심 원리와 활용 (김영한)

docker 엔진 설치와 구성 확인

docker 엔진 설치와 구성 확인 설치 전 확인 / docker 사용에 필요한 패키지 설치 docker 설치 전 확인 사항 리눅스 커널 정보 (3.10 이상), 64 비트 (x86_64) docker 사용에 필요한 패키지 설치 apt-transport-https : docker는 CE 버전 다운 (사용하는 웹 주소 https로 되어 있음) ca-certificates : https는 인증서 필요, 인증서 기능 패키지 curl : api 통신 gnupg-agent : docker는 패키지 가드를 사용함 software-properties-common : docker repository에서 다운, repository 관리 기능을 제공 keyring 을 통한 apt key 관리 curl -fsSL https..

Ubuntu linux 환경 구성

Ubuntu linux 환경 구성 network 환경 구성과 remote 접속 설정 enpOs8 번의 내부 ip 를 수동으로 설정 enpOs3 : NAT enpOs8 : putty 나 winSCP 접속 허 1번 서버 : 101 / 2번 서버 : 102 Gateway : VM 2번 클라이언트 접속용 DNS : 구글 DNS 네트워크 확인 마우스 오른쪽 클릭 > Open in Terminal sudo apt update : apt 를 통해 설치를 진행하기 때문에 처음은 update sudo apt install net-tools vim openssh-server : net-tools설치 ifconfig : ip 확인 ping 테스트 (ping 테스트 실패시 윈도우 방화벽을 해제후 다시 시도) VM 호스트 윈도..