First Akka App

Index

  • 여러 노드에서 Akka 앱 실행

    • goticks.com
    • 프런트 엔드 + 백엔드
  • akka remote 모듈

    • 네트워크상에서 actor 간 커뮤니케이션
  • 클러스터링 X

Scaling Out

도입

  • 분산 컴퓨팅은 어렵다. Akka도 마찬가지지만 Actor가 조금 쉽게 해준다.
  • RPC, 로컬에서 호출하듯 리모트에서도 호출하고 싶다.- P2P
  • 더 많은 노드로 구성된 네트워크에는 메시징이 적합

네트워크 토폴로지

  • 노드: 특정 task를 수행하는 role
    • 프로토콜: TCIP/IP, UDP
    • protocol data unit
      • message, byte
        • 직렬화/역직렬화
  • 그룹 멤버십: 노드 그룹
    • static
    • dynamic
      • flexible to 실패 노드
      • discovery

분산 프로그래밍 모델

  • 단일 노드에서 구현한 다음 코드 수정없이 멀티 노드로 확장할수 있는 방법은 ? 없다
  • 로컬대비 분산 모델의 4가지 중요한 차이점
    • Latency: 메시징 딜레이 타임 by traffic
    • Partial Failure: 네트워크 상의 노드가 살아있는지 확인하는건 어렵다.
    • Memory Access: 분산 설정에서 객체 참조를 얻어온다.
    • Concurrency: no owner, 상호간 연산만 존재
  • Akka는 로컬에서도 분산 모델로 동작하는것으로 이슈를 해결
    • 멀티 코어 환경, 비동기 프로그래밍에 유리

Remoting

  • static 멤버십: 클라이언트-서버 네트워크, 프런트엔드 & 백엔드
    • 프런트 엔드: REST 인터페이스
      • lookup BoxOffice 액터
      • deploy remotely BoxOffice 액터
    • 백 엔드: BoxOffice, TicketSeller

GoTicks Distributed

  • build.sbt
    • akka-remote
    • akka-multi-node-testkit
  • remote node 주소를 찾는 방법
    • look up
    • create,get reference,deploy it remotely
  • application.conf
    • ActorRefProvider
    • backend:2551, frontend:2552

GoTicks Distributed

  • actorSelection 메소드
    • 쿼리에 맞는 모든 액터에 메시지를 보낸다.
  • Remote Lookup 이 필요한 이유
    • backend 액터 시스템은 시작되지 않았거나 crashed 되었거나 재시작되지 않았을수 있다.
    • boxOffice 액터 자체가 crashed restarted 될수 있다.
  • Identify 메시지

Remote Deployment

  • static 멤버십: 클라이언트-서버 네트워크, 프런트엔드 & 백엔드
    • 프런트 엔드: REST 인터페이스
      • lookup BoxOffice 액터
      • deploy remotely BoxOffice 액터
    • 백 엔드: BoxOffice, TicketSeller
Made with Slides.com