카샤의 만개시기
close
프로필 배경
프로필 로고

카샤의 만개시기

  • 분류 전체보기 (105)
    • 만개시기 (1)
    • Foundation (13)
      • Algorithm (3)
      • Operation (1)
      • Network (2)
      • Programming (1)
      • Design Pattern (5)
    • Architecture (1)
      • DDD (1)
    • Java (23)
      • POJO (11)
      • Spring (4)
      • Liferay (1)
      • MSA (7)
    • Kotlin (13)
    • Go언어 (6)
    • Javascript (2)
      • EcmaScript (0)
      • Node.js (0)
      • React (0)
    • Swift (0)
    • Python (0)
    • Android (0)
    • IOS (0)
    • Database (4)
      • mySQL (3)
      • MongoDB (0)
      • Oracle (0)
      • Redis (0)
    • DevOps (25)
      • Docker & K8S (17)
      • Ansible (2)
      • Performance Test (4)
      • APM (1)
      • Fluentd (1)
    • Machine Learning (12)
    • Big Data (0)
      • pyspark (0)
    • Review (3)
    • 유용한 정보 (1)
    • 일상 (1)
  • 홈
  • 카테고리
  • 방명록

OSGI에서 Jigsaw로 모듈 시스템

OSGI (Open Service Gateway initiative) OSGI의 핵심 개념은 프로그램을 만들 때 하나의 큰 프로그램으로 만들지 않고 여러 가지의 작은 프로그램을 만든 후 이것을 하나로 묶어 내는 것입니다. OOP가 클래스를 모듈화 시키는 것이라고 했을때, OSGI는 아예 프로그램 자체를 모듈화(OSGI에서는 이것을 번들(bundle)이라고 부릅니다.) 하고, OSGI Framework에서 이 모듈들을 각각 등록시키고 요청에 따라 실행을 시키게 됩니다. OSGI의 장점은 다른 모듈의 코드를 전혀 신경쓰지 않아도 된다는 것이며, Input과 Output의 형태만 유지시켜주면 코드 변경으로 인한 오류가 일어날 걱정을 하지 않아도 된다는 것 입니다. 또한 가장 큰 특징으로 OSGI의 life c..

  • format_list_bulleted Java/POJO
  • · 2019. 7. 1.
  • textsms

익명클래스 vs 람다

인터페이스는 직접 객체화할 수 없기 때문에 구현 클래스를 이용하는데 일회성으로 사용하는 구현 클래스를 계속 선언하는 것은 비효율적이기 때문에 익명 클래스나 람다를 이용하여 구현 클래스를 선언합니다. 익명 클래스 익명 클래스는 코드가 너무 길어 함수형 프로그래밍 방식에 적합하지 않습니다. 익명 클래스에 대해 알고 싶다면 다음 글을 참조해주세요. 중첩클래스 (내부클래스, 정적 중첩클래스, 지역클래스, 익명클래스) 함수 객체 (Function Object) 특정 동작을 목적으로 추상 메서드를 하나만 담은 인터페이스나 추상 클래스를 함수 객체라합니다. 람다 JDK 1.8 이후로는 함수 객체의 인스턴스를 람다식으로 만들어 사용할수 있습니다. Collections.sort(list, new Comparator() ..

  • format_list_bulleted Java/POJO
  • · 2019. 6. 30.
  • textsms

중첩클래스 (내부클래스, 정적 중첩클래스, 지역클래스, 익명클래스)

중첩 클래스는 하기와 같은 구조를 가지고 있습니다. Nested Classes Static Nested Classes (정적 중첩 클래스) Inner Classes Inner Classes (내부 클래스) Method Local Inner Classes (지역 클래스) Anonymous Inner Classes (익명 클래스) 중첩 클래스를 사용하는 이유 한 곳에서만 사용되는 클래스를 논리적으로 그룹화하는 방법 캡슐화 증가 좋은 가독성과 유지보수성 Static Nested Classes (정적 중첩 클래스) 내부클래스는 밖에 있는 클래스의 자원을 마음대로 사용할 수 있지만 중첩클래스는 static 키워드가 안붙었다면 사용할 수 없습니다. Outer 클래스가 인스턴스화 되어있지 않아도 객체를 생성이 가능합..

  • format_list_bulleted Java/POJO
  • · 2019. 6. 30.
  • textsms

마이크로서비스 시작하기 (7편) - 라우팅

MSA를 포함하는 분산 환경에서의 서비스 호출은 IP주소와 포트를 이용하여 이루어지는데, 클라우드 환경이 되면서 오토 스케일링을 통해 동적으로 서비스가 돌아가면서 IP나 포트 역시 동적으로 변경되는 일이 흔하게 되었습니다. 그래서 서비스 클라이언트는 서비스를 호출할때 서비스의 위치(IP, Port)를 조회 할 필요성을 느끼게 되었는데 이를 서비스 디스커버리(Service Discovery)라고 합니다. 서비스 디스커버리는 기본적으로 서비스를 등록하고 등록된 서비스의 목록을 리턴하는 기능이지만 서비스의 Health check를 통하여 어떤 서비스 인스턴스가 살아있는지, 서비스간의 로드밸런스, 서버 목록에서의 Master/Slave 정보 리턴, 서버에 접속하기 위한 인증키 정보 리턴, 보안과 암호화와 같은 ..

  • format_list_bulleted Java/MSA
  • · 2019. 6. 25.
  • textsms

마이크로서비스 시작하기 (6편) - HATEOAS

좋은 REST API는 GET, PUT, POST, DELETE 등과 같은 동사와 HTTP 헤더, 상태 코드 등 HTTP의 기능을 최대한 올바르게 활용하는 것을 말합니다. REST는 어떤 기술 표준이 아닌 HTTP에 대한 일종의 아키텍처 제약사항이며 레너드 리차드슨 (Leonard Richardson)은 REST 성숙도 모델을 통해 API의 REST 원칙 준수 등급을 정의하였습니다. LEVEL 0. POX(Plain Old XML)의 늪 REST를 도입하기 전 상태를 말합니다. 모든 전송과 응답을 POST로 하며 접근 가능한 엔드 포인트는 하나이며 HTTP의 body에 정보를 넣어 전송하는 기존의 리소스 전송 방식을 사용합니다. LEVEL 1. 자원 고유의 URI로 각각의 제공하는 자원을 주고 받습니다...

  • format_list_bulleted Java/MSA
  • · 2019. 6. 24.
  • textsms

마이크로서비스 시작하기 (5편) - 분산 트랜잭션

트랜잭션은 모든 작업이 성공한 경우에만 작업이 커밋되어 데이터베이스에 반영되고 하나의 작업이라도 도중에 실패하면 모든 작업을 롤백하는 'all or nothing'의 조건을 만족해야 합니다. 데이터베이스가 N대의 샤드로 구성된 웹 서비스 환경에서는 분산 트랜잭션을 이용하여 이를 만족할수 있습니다. 분산 트랜잭션 분산 트랜잭션(distributed transaction)은 2개 이상의 네트워크 시스템 간의 트랜잭션입니다. 일반적으로 시스템은 트랜잭션 리소스의 역할을 하고, 트랜잭션 매니저는 이러한 리소스에 관련된 모든 동작에 대해 트랜잭션의 생성 및 관리를 담당합니다. 분산 트랜잭션은 다른 트랜잭션처럼 4가지 ACID(원자성, 일관성, 고립성, 지속성) 속성을 갖추어야 하며 여기에서 원자성은..

  • format_list_bulleted Java/MSA
  • · 2019. 6. 22.
  • textsms
  • navigate_before
  • 1
  • 2
  • 3
  • 4
  • navigate_next
공지사항
전체 카테고리
  • 분류 전체보기 (105)
    • 만개시기 (1)
    • Foundation (13)
      • Algorithm (3)
      • Operation (1)
      • Network (2)
      • Programming (1)
      • Design Pattern (5)
    • Architecture (1)
      • DDD (1)
    • Java (23)
      • POJO (11)
      • Spring (4)
      • Liferay (1)
      • MSA (7)
    • Kotlin (13)
    • Go언어 (6)
    • Javascript (2)
      • EcmaScript (0)
      • Node.js (0)
      • React (0)
    • Swift (0)
    • Python (0)
    • Android (0)
    • IOS (0)
    • Database (4)
      • mySQL (3)
      • MongoDB (0)
      • Oracle (0)
      • Redis (0)
    • DevOps (25)
      • Docker & K8S (17)
      • Ansible (2)
      • Performance Test (4)
      • APM (1)
      • Fluentd (1)
    • Machine Learning (12)
    • Big Data (0)
      • pyspark (0)
    • Review (3)
    • 유용한 정보 (1)
    • 일상 (1)
최근 글
인기 글
최근 댓글
태그
  • #java
  • #Spring
  • #devops
  • #Kotlin
  • #쿠버네티스
  • #cloud native
  • #MSA
  • #Microservice
  • #클라우드 네이티브
  • #코틀린
전체 방문자
오늘
어제
전체

티스토리툴바