목록분류 전체보기 (114)
suyeonme
셸 스크립트 기본 규칙 셸스크립트를 작성하기에 앞서 기본으로 지켜야할 규칙은 다음과 같다. #!/bin/bash echo "Root Directory" cd / ls -l # 한행으로 입력하는 경우(위와 동일) echo "Root Directory";cd /;ls -l 셸스크립트는 명령어가 하나씩 실행되며 여러 명령어를 ;로 연결하면 한 행으로 입력할 수 있다. 빈행은 무시된다. #로 주석을 남긴다. 커맨드라인이 길어질 경우, 행 끝에 \를 입력하면 여러 행에 걸쳐 입력할 수 있다. #!/bin/bash echo \ "Root Directory" 변수(Variable) 변수명=값으로 변수를 저장하며 그 사이에는 공백이 없어야한다. 변수명에 사용할 수 있는 문자는 알파벳, 숫자, 언더스코어(_)이다. 숫자..
셸스크립트란? 셸에서 실행될 커맨드라인을 입력해놓은 파일로, 셸에 의해 해석되기 때문에 어떤 셸을 사용하는지에 따라서 문법이 달라진다. 셸스크립트를 한번 작성하면 이후 비슷한 처리를 수행할 때 재사용할 수 있으며 다른사람에게 쉽게 공유할 수 있다. sh vs bash sh는 bash보다 오래전 설계되어 기능이 적으며 배포판에 따라서 실체가 다르고 동작도 다르다. bash는 GNU 프로젝트에 의한 구현체 밖에 없으므로 어떤 운영체제에서도 동일하게 동작한다. 최근 리눅스에서는 bash가 기본으로 설치되어 bash 셸 스크립트의 호환성과 이식성이 매우 높다. 따라서 최근에는 bash기반의 셸스크립트를 주로 사용한다 셸스크립트 실행 셸 스크립트를 실행하는 방법으로 아래 두가지 방법이 있다. 셔뱅(shebang)..
ssh로 서버에 연결 일반적으로 ssh로 서버에 연결하는 방법은 아래와 같다. .ssh 디렉터리에 pem 키를 다운로드한다. chmod 600 ~/.ssh/key-name.pem 명령어를 입력하여 pem 파일의 permission을 private key의 permission으로 변경 한다. ssh -i key-name.pem user@hostname 명령어를 입력하여 서버에 접속한다. 커넥션 종료시 exit을 입력한다. ssh 디렉터리 ~/.ssh 디렉터리는 사용자가 처음으로 ssh 명령을 실행할 때 자동으로 생성된다. chmod Permission chmod 600 ~/.ssh/config 명령어로 나(owner)만 이 파일을 읽고 쓸 수 있고 다른 사용자가 액세스할 수 없도록 permission을 변..
Spring Cloud Eureka란? Spring Cloud Eureka는 Netflix에서 공개한 OSS Service Registry로 Eureka Client와 Eureka Server로 구성된다. 마이크로서비스들의 정보를 Registry에 등록하고 로드밸런싱을 제공하는 미들웨어서버이다. Eureka는 각각 연결된 서비스의 IP, Port, Instance ID를 가지고 있으며 REST 기반으로 동작한다. Eureka Server에 등록된 마이크로서비스는 Eureka Client라고 부른다. 따라서 마이크로서비스를 Eureka Server에 등록하면 Eureka Client에 대한 정보를 저장하기 때문에 각각의 마이크로 서비스끼리 통신하는 경우, Eureka에서 받아온 정보로 요청을 보낸다. Eu..
@ControllerAdvice, @ExceptionHandler란? @ControllerAdvice @Controller(+@RestController)가 적용된 모든 스프링빈에서 발생하는 예외를 잡아서 처리해주는 어노테이션이다. 아래 예시처럼 {NullPointerException.class, UserServiceException.class}와 같이 여러 클래스를 함께 정의할 수도 있고 단일 클래스만 정의할 수도 있다. 아래와 같이 작성한 경우, 모든 컨트롤러에서 NullPointerException 또는 UserServiceException 커스텀 예외가 발생하는 경우, 아래 클래스가 예외를 잡아서 처리한다. ErrorMessage 클래스처럼 에러 메세지를 위한 객체를 생성한 뒤 클라이언트에 일관된..
@Valid, @Validated javax.validation 패키지에 있는 @Valid 어노테이션을 사용하여 @RequestBody 객체의 유효성을 검사할 수 있다. 스프링부트 2.3버전 이상의 버전에서는 spring-boot-starter-web의 의존성이였던 validation이 제거되었다. 따라서 직접 의존성을 추가해주어야한다. // build.gradle dependencies { //... implementation group: 'org.springframework.boot', name: 'spring-boot-starter-validation' } @Valid javax.validation 패키지에 속하는 어노테이션으로 JSR-303 자바 표준 스펙이다. Controller의 메소드에 대한..
마이크로서비스(Mocroservice)란? 마이크로서비스는 API를 통해 통신하는 소규모의 독립적인 서비스로 구성되어 있는 소프트웨어 아키텍쳐이다. 마틴파울러는 아래와 같이 마이크로서비스를 정의했다. 해당 내용은 여기서 확인할 수 있다. The term "Microservice Architecture" has sprung up over the last few years to describe a particular way of designing software applications as suites of independently deployable services. While there is no precise definition of this architectural style, there are ce..
단위 테스트(Unit Test) 단위 테스트는 단일 클래스나 메서드처럼 범위가 상대적으로 좁은 테스트를 뜻한다. 단위 테스트 장점 단위 테스트는 빠르고 결정적(deterministic)이여서 개발자들이 수시로 수행하며 피드백을 즉각 얻을 수 있다. 대상 코드와 동시에 작성할 수 있을만큼 작성하기 쉽다. 빠르게 작성할 수 있으므로 테스트 커버리지를 높이기 좋다. 테스트는 개념적으로 간단하고 시스템의 특정 부분에 집중하므로 실패시 원인 파악이 쉽다. 대상 시스템의 사용법과 의도한 동작 방식을 알려주는 문서자료 역할을 한다. 단위 테스트를 수행해야하는 시점 순수 리팩터링 새로운 기능 추가 버그 수정 코드의 행위 변경 좋은 단위 테스트를 작성하는 원칙 공개 API를 이용해 테스트하자 내부 구현을 위한 코드가 아..