Spring 2.5

- OS에 디펜던시가 큼

- AIX(IBM), ADF와 함께 쓸 때, 오동작을 일으키기도 함


싱글톤, 멀티쓰레드 환경에서 시리얼라이제이션을쓰면 ... ?


시리얼라이제이션

: 분산처리할때

serialized UI 라는 객체가 있음

- 자바에서 시리얼라이즈라하면,

Stream(byte화하는 것) 중 I/O계열에 있는 애들중

ByteArrayInputStream 등등 많은데, ObjectStream이란놈이있는데, 


- 엔드포인트에서 데이터 In/out할때 serialization 


=> 자바에서 Stream으로 데이터를 보낸때, DTO로 매번 감싸는 것도 문제이므로 오브젝트 자체에 Serial ID를 부여한다. 이런 방식을 일반적으로 자바에선 Serialize이라고 한다.

(de-Serialize, static변수는 적용할 수 없음)


- 스프링의 싱글톤과 VM측면에서의 싱글톤은 다른 의미이다.




# Stress 

1. 이용자수 (회원수) 100%

2. 동접자수 10%

3. 동시사용자수 10%

: 회원수가 100명일때, 동접자수가 10%인 10명이고, 동시사용자수가 10%인 10명일때, 처리시간이 1초정도? 



# 좋은도구, 시스템, 

코드 스니핏 - 이클립스에서 개발환경을 자동화해준다(자바 리플렉션, 인트로스펙션)

인트로스펙션 : 자바소스를 완변하게 분석해주는 툴 -> AST (Abstract Syntax Tree, AST view)

소스코드를 추상화 트리로 만들어 줘서 자바소스를 완벽하게 분해를 한다. 

클래스 정보를 로드를하면 메소드, 변수, 모든 정보를 알아낸다.(인트로스펙션)

문자열로부터 자바객체로 만들어낸다 (리플렉션)



# LRCP , 2PC

자바의 XA드라이버를 사용하지 않아도 요즘에나오는 WAS들은 2PC를 제공해주면서(WAS의 고급기술)분산트랜젝션을 제공할 수 있음



# 인프라개발자

EA - 

BA : domain, 비지니스아키텍트

TA : 테크니컬 아키텍트, System 구성

DA : Data 아키텍트, 

AA > SA : 소프트웨어 아키텍트, 

(AA가 더 넓은 영역을 커버하고있음, 가령 서울시를 설계한다면, SA는 건물의 내부를 설계)


XaaS -     

IaaS 

PaaS

SaaS

DaaS



인프라개발자 ...... 하드웨어 개발, 시스템 관련한 개발, 

: 레드햇 등에서 하드웨어 플러그인등 미들단에서 OS를 풍부하게해주는 개발을 하는데, 완전 인프라단은 아니지만, 인프라 개발자 범주에 들 수 있음.


----------------------------------------------

java 엔지니어 공부순서

1. 자바패턴,

2, 스프링소스까기(2달정도만 해도.. 스프링 고수가됨)

3. JDK소스까고, JavaDOC 보기


# 애플리케이션

: EPOT(e-portal:온라인포털)


$ 아키텍처 설계

> 레이어 - 각 레이어 별 적용 기술 요소 매핑



> 프로그래밍 규약

- 컴포넌트 : 스스로 동작할 수 있는 최소한의 단위

- 유틸리티 : 유틸리티 성 비지니스, 공통적으로 사용, 달력같은...

- 기능분류 : 퍼사드... 

- domain = DO = TO ...



> 코드 컨변션

- 이클립스 > preference > java > code style

  a. organize imports 

  b. code templates

  c. 카피라이트 자동화

...



> 개발표준, 메소드 접두어 명명규칙


# 컴포넌트 설계/분류

# 컴포넌트 분류



# 웹서비스 설계



# intel DPDkP의 해결책


 패킷처리 성능 저하 요소

DPDK 처리 

CPU 처리속도와 메모리/PCI 인터페이스 사이에서 발생하는 처리속도 차이 

배치 패킷처리 - 다수 패킷을 동시 처리하는 I/O 최적화 기술 

네트워크 패킷마다 동적으로 버퍼메모리를 할당/해제 

패킷마다 고정길이의 메모리를 사전에 할당 

공유데이터 구조로 병목현상 시, 패킷처리 성능저하 

lockless 구현, 불필요한 대기시간 절약 

리눅스 페이지 테이블 사이즈로 인해 TLB Miss 계속 발생 

TLB miss를 줄이기위해 2MB 또는 1GB huge 페이지를 사용 

최적화되지 않은 인터럽트 기반의 물리 NIC, 가상 NIC 드라이버 

최적화된 폴 기반의 NIC 드라이버 (intel NIC only) 

 CPU가 데이터를 기다리는 상황으로인한 패킷처리 성능 저하

메모리 엑세스에 대한 Pre-fetching 기술 및 chche line 사이즈(64byte)로 정렬 

멀티 프로세서를 사용하더라도 성능이 scale 되지 않는 문제 

Run-to-complete 모델을 통해 horizontal scalsbility를 제공 

리눅스 스케줄러의 thread 스위칭 오버헤드 

CPU Core Isolation 기술(S/W thread를 H/W Thread로 매핑)로 성능향상 

호스트 커널 네트워킹 스택 성능의 제약 

KNI(Kernel Network Interface)를 통해 커널 네트워킹 스택 성능 개선 





# Linaro ODP

: LNG에서 플랫폼에 상관없는 네트워킹 데이터 평면에 API를 제공하기 위해 오픈소스로 공개


- 사용자단에서 한개의 프로세서로 동작, 최소한의 API를 호출

- ODP API : 커널의오버헤드를 야기하지 않고, 가용한 하드웨어의 특성을 사용하여 DPA를 실현하고자 함

  (= SDK API)

- 하드웨어 의존적인 SDK API 호출을 배제하지 않음, 플랫폼에 상관없는 소스레벨의 호환성을 제공해주지 못할 수 있음

- 데이터 플레인 응용을 지원하는 플랫폼

- 리눅스 API를 사용하는 리눅스 사용자 평면제어 또는 관리평면 기능을 구현한 응용프로그램과 병렬처리 가능





# Linaro ODP 추상화된 논리적 패킷처리 구조

SW - 소프트웨어 블록

HW - 대부분 하드웨어 블록에 의해 수행되는 부분으록 간주하지만, 소프트웨어에서 수행될수도 있음

빗금 - 낮은 액세스 지연을 가지는 펌웨어와 같은 하드웨어에서 아주 가까운 소프트웨어에 의해 수행되는 기능


1. Packet Input 블럭 - 물리적 입력단의 패킷 포트를 추상화

2. Pre-Processing - 물리 인터페이스와 동일한 속도로 처리, 버퍼 풀의 선택 및 첫번째레벨의 congestion 제어를 위한 패킷분류 수행

3. Input Classification - 구별된 트래픽 플로우 분석 및 분류, 큐에 배정, 분석결과 메타데이터를 추가

4. Ingress Queuing - 실제 페이로드에 대한 메타에이터(descriptor)들의 큐를 제공, 큐에대한 descriptor들은 HW장비 또는 SW에서 도착

5. Delivery/Scheduling - 동기화된 SW/HW 인터페이스, 동작 스케줄링과 한일 수신점에 대한 다수개의 프로세서 코어에 대한 로드밸런싱 수행

* 스케줄러큐 - 우선순위 설정, 큐의 상태, CPU상태를 참조

6. Accelerator - 비동기적 큐기반의 인터페이스에 대해 암호화 또는 압축등 특수 목적 처리를 수행

7. Co-processors - Accelerator과 유사, SW에 대한 동기화된 인터페이스를 가지고 빠른 동작을 수행

8. Egress Queueing - 출력 포트를 향해 동기화된 인터페이스를 제공

* 각각의 큐는 논리적으로 매핑, 설정된 QoS기능을 선택적으로 수행

9. Post Processing - 패ㅣㅅ을 출력포트를 위해 스케줄링, 패킷이 나가면 패킷 버퍼를 해제, 패킷 checksum등 inline가속 기능 제공

10. Packet Output - 물리 출력 포트에대한 인터페이스 제공






+ Recent posts