'STUDY > PROGRAMMING' 카테고리의 다른 글
failover cluster / LoadBanlancing (0) | 2018.08.30 |
---|---|
2. GRADLE ( 도서: gradle 철저입문 ) (0) | 2018.08.27 |
1. Blocing / NonBlocking & Synchronous / Asynchronous (1) | 2018.08.27 |
failover cluster / LoadBanlancing (0) | 2018.08.30 |
---|---|
2. GRADLE ( 도서: gradle 철저입문 ) (0) | 2018.08.27 |
1. Blocing / NonBlocking & Synchronous / Asynchronous (1) | 2018.08.27 |
vert.x
verticle 생성 후 작업중인 스케줄러 동작시 서버관리 및 failover시 처리
-cluster
서버 클러스터링이랑 두대 이상의 서버가 하나의 서버가 처리하는 것 처럼 보이도록 서버들 간의 확립된 연결을 만들어 놓은 것을 말한다.
장애 대응 시스템 및 부하분산 시스템, 병렬 처리 프로세싱에 사용 될수있는 기술이다.
클러스터링 서버들간의 데이터의 동기화
-fail over
운영중인 서버가 멈췄을때 대기 중인 서버를 운영서버로 장애처리 작업을 해야한다.
master 서버와 standby 서버를 구성하고 있는 master 서버가 fail시 stanby 서버가 자동으로 서버의 역활을 한다.
stanby서버는 평상시에 대기상태로만 있다가 master서버가 fail될 경우만 작동을 한다. 이 구성을 fail over라고 한다.
LoadBanlancing
서버의 로드를 클러스터링된 서버별로 균등하게 나누어 주는 서버 , 서버의 사양과 처리량에 따라 차별적으로 분배해준다.
장애 대처 능력이 향성되며 유지 관리에 효율적이다.
역프록시의 한계
많은 엑세스가 증가하는 서비스인 경우 프록시 서버가 모든것을 해결할수없다. 이러한 경우 역프록시 서버나 웹 서버보다도 앞에 로드 밸린서라는 것을 도입한다.
네트워크 기능과 서버 소프트웨어의 중간과 같은 존재이다. 또한 다른 서버와 동일하게 리눅스등이 인스톨된 서버를 두어 LVS(Linus Virtural server) 사용하는 경우도 있다.
high Availability(HA)
서버와 네크워크 등 시스템이 지속적으로 정산 운영 가능하도록 하는 기술
https://ko.wikipedia.org/wiki/%EC%BB%B4%ED%93%A8%ED%84%B0_%ED%81%B4%EB%9F%AC%EC%8A%A4%ED%84%B0
>> verrtx.sharedData().getLockWithTimeout()를 이용하여 lock 실행한후 어느 서버가 마스터 인지 체크 후 master 서버에서만 스케줄러가 작동한다.
>> 자신이 설계한 로직들이 서버에 어떤 부하를 줄지, failover의 상황에 어떤 결과를 줄지 고려하여 설계할 것
웹 개발 공략서 (0) | 2018.09.02 |
---|---|
2. GRADLE ( 도서: gradle 철저입문 ) (0) | 2018.08.27 |
1. Blocing / NonBlocking & Synchronous / Asynchronous (1) | 2018.08.27 |
빌드 툴 : 정형화 된 작업을 자동화 하기 위한 소프트웨어
빌드
1. 소스 코드( .java)를 컴팰해서 클래스 파일(.class)를 생성한다.
2. 코딩 규약에 맞게 작성했는지 확인한다.
3. 코드를 정적으로 해석한다.
4. 테스트를 하고 테스트 결과나 커버리지 측정 결과를 리포트로 출력한다.
5. javsdoc과 같은 문서를 작성한다.
6. 클래스 파일과 리소스 파일을 패키지이해서 압축 파일을 만든다.(.jar 과 .war 파일)
7. 압출파일을 테스트 환경이나 스테이징 환경에 배포한다.
8. 압축 파일을 저장소에 등록한다.
그래들 특징
빌드스크립트 생산성이 높다 : 규칙 기반 빌드 접근법을 사용한다. 규칙예외사항은 스크립트를 추가할 수 있어 유연하게 대응할 수 있다.
빌드 순서를 제어하기 쉽다 : 그레들의 빌드 순서는 테스크 의존관계에 따라 정해진다. (메이븐과 앤드의 중간단계)
멀티 프로젝트에 대응한다.
컴포넌트로 만들기 쉽다. : 빌드 스크립트에서 메서드나 클래스 추출 / 빌드 스크립트의 분할과 재사용
/ 프로젝트에서만 사용할 수 있는 확장 모듈 / 여러 프로젝트에서
범용적으로 사용할 수 있는 라이브러리
별도로 설치할 필요가 없다. : 그래들 래퍼 태스크를 실행해서 부트스트랩을 생성하기만 하면 된다.
그래들의 설치
JDK 6이상 필요하다
Gvm 설치
gvm
$ gvm install gradle
$ gvm install gradle <version>
$ gvm list gradle
1. 자바 프로젝트
build.gradlew
=============================================================
진행 프로젝트 빌드 스크립트 전문
apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'application'
mainClassName = 'VerticleManager'
def defaultEncoding = 'UTF-8'
compileJava.options.encodind = defaultEncoding; // 소스 세트 main을 컴파일 할때 적용하는 인코딩 지정
sourceCompatibility = 1.8 // java jdk 버전 설정 컴파일할때 생성하는 클래스 파일의 jdk버전설정은 targetCompatibility 이다.
def vertxVersion = '3.5.3'
//의존 관계 해결위치로 매이븐 저장소 사용
repositories {
mavenCentral();
}
dependencies {
compile "io.vertx:vertx-core:${vertxVersion}"
compile "org.slf4j:slf4j-api:1.7.25"
compile "io.vertx:vertx-hazelcast:${vertxVersion}"
}
sourceSets {
main {
java {
srcDirs = ['src/main/java']
}
resources {
srcDirs = ['src/main/resources']
}
}
}
//기타 설정들 예시
//jar {
baseName : 'example'
appendix = 'bin'
}
//compileJava{
options.fork = true
}
=============================================================
그레들의 핵심 기능
- 전형적인 반복 작업을 자동화하기 위한 구조
- 자동화된 처리를 실행하기 위한 부품
자동화 대상이 되는 구체적인 작업들은 모드 플로그인으로 구현되어 있으며 핵심기능과 분리되어 있다.
apply plugin: 'java'
>>그레들에게 자바 프로젝트를 빌드할 때 반드시 팔요한 java 플러그인 사용한다는 선언문
자바 플러그인이란 자바 빌드에 필요한 테스크 설정을 단순화하는 규칙, 그것을 구현하기 위한 속성 및 소스 세트가 패키지로 구성된 빌드 기능 컴포넌트이다.
-Source set
빌드 스크립트에 자유롭게 추가할수있으며 컴파일 대상인 자바 코드와 리소스를 세트로 지정 할 수 있다.
컴파일 출력 경로를 지정할 수 있다.
자바 플러그인에는 이미 main과 test 두가지 소스 세트가 정의되어 있다. 따라서 프로덕션 코드의 단위 테스트 코드 이렇게 두 가지 소스 세트만으로 대응 가능한 자바 프로젝트라면 다른 소스 세트를 추가하지 않아도 된다.
- task
자바 플러그인이 제공하는 테스크는
1 .complie.Java : 프로덕션 코드를 컴파일 한다. 대상 소스세트 main의 java. srcDirs 속성에서 지정한 디렉터리에 있는 코드 중 확장자가 .java 인 파일이다.
2. processResources : 프로덕션 코드의 리소스르르 클래스 패스에 복사한다. compileJava 디렉터리중 .java를 제외한 모든 파일
3. classes : 1.2번 실행
4.. compileTest.java
5. processTestResources
6 etc : testClasses / jar/ javadoc / test/ clean/ clean<tastname>.assemble/ build/ uploadArchives /check / buildNeeded / buildDependents
=============================================================
현재 진행중인 프로젝트 task 출력
:compileJava UP-TO-DATE
:processResources UP-TO-DATE
:classes UP-TO-DATE
:jar
:startScripts UP-TO-DATE
:distTar
:distZip
:assemble
:compileTestJava NO-SOURCE
:processTestResources NO-SOURCE
:testClasses UP-TO-DATE
:test NO-SOURCE
:check UP-TO-DATE
:build
=============================================================
-규칙
프로덕션 코드 파일은 src/main/java 디렉터리 아래 둔다.
프로덕션 리소스 파일은 src/main/resources에 아래 둔다.
-속성
태스크를 제어하거나 규칙을 구현하기 위해 속성을 제공한다.
https://docs.gradle.org/current/userguide/java_plugin.html
$ gradlew build: task 실행
$ gradlew run: 프로젝트가 실행
$ gradlew clean: 빌드 결과물을 삭제함
웹 개발 공략서 (0) | 2018.09.02 |
---|---|
failover cluster / LoadBanlancing (0) | 2018.08.30 |
1. Blocing / NonBlocking & Synchronous / Asynchronous (1) | 2018.08.27 |
웹 개발 공략서 (0) | 2018.09.02 |
---|---|
failover cluster / LoadBanlancing (0) | 2018.08.30 |
2. GRADLE ( 도서: gradle 철저입문 ) (0) | 2018.08.27 |