AKKA가 BSL라이센스로 변경되면서 AKKA는 더이상 무료가 아니지만~ 안정적으로 운영되다 전환된 버전을 오픈소스로 지원하네요

최신버전을 사용할수는 없지만 오히려 안정적인 버전을 오픈소스로 이용할수는 있게 되었습니다. 


FORK를 딴버전이라 의존성및 import 경로변경 약간의 수고스러움만 하면 100%호환가능하며 지원 버전은 최신문서를 주시

  • pekko에서 지원하는 의존 버전인 scala와 akka버전을 함께 체크해야합니다.

의존성

	val scalaVersion = "2.13"
	val akkaVersion = "2.7.0"
	val pekkoVersion = "1.1.2"  // 2.6.x 기능지원

	// Akka
	//implementation(platform("com.typesafe.akka:akka-bom_$scalaVersion:$akkaVersion"))
	implementation(platform("org.apache.pekko:pekko-bom_$scalaVersion:$pekkoVersion"))

	// Akka UnTyped Actor
	//implementation("com.typesafe.akka:akka-actor_$scalaVersion:$akkaVersion")
	//implementation("com.typesafe.akka:akka-stream_$scalaVersion:$akkaVersion")
	implementation("org.apache.pekko:pekko-actor_$scalaVersion:$pekkoVersion")
	implementation("org.apache.pekko:pekko-stream_$scalaVersion:$pekkoVersion")

	// Akka Typed Actor
	//implementation("com.typesafe.akka:akka-actor-typed_$scalaVersion:$akkaVersion")
	implementation("org.apache.pekko:pekko-actor-typed_$scalaVersion:$pekkoVersion")

	// Actor TestKit
	//testImplementation("com.typesafe.akka:akka-testkit_$scalaVersion:$akkaVersion")
	//testImplementation("com.typesafe.akka:akka-actor-testkit-typed_$scalaVersion:$akkaVersion")
	testImplementation("org.apache.pekko:pekko-testkit_$scalaVersion:$pekkoVersion")
	testImplementation("org.apache.pekko:pekko-actor-testkit-typed_$scalaVersion:$pekkoVersion")

	// Actor Logging
	//implementation("com.typesafe.akka:akka-slf4j_$scalaVersion:$akkaVersion")
	implementation("org.apache.pekko:pekko-slf4j_$scalaVersion:$pekkoVersion")

Type vs Untyped

  • 초기 Typed이 없던 버전이 Classic Actor 버전이며 ( prefix 없음 )
  • Typed 제약이 부여된 액터버전이 -typed 가 페어로 붙게됩니다.
    • 장점 : 메시지를 보내 받고를 Behavior라는 패턴을 이용 Typed로 정의되어야 하기때문에 엄격하지만 Safe한 개발을 할수 있습니다. Type제약없애려면 Any를 활용해도 됩니다.
    • 단점 : 새로운 방식의 액터모델 정의에 적응해야하며 엄격하기때문에 , Type 제약이 없었기때문에 기존 만들어놓은 장치들의 변화가 필요할수도 있습니다. 혼용도 할수 있겟지만 시스템을 분리 작동시켜야합니다.
    • 권장 : 다뤄야하는 이벤트의 종류가 복잡해지고 다양해지면 Typed를 권장합니다. 머릿속에 그릴수 있는만큼의 이벤트라고 하면 Untyped를 사용해도 무방하지만 복잡해질수록 작동방식을 코드를 통해 파악하기 어려울수 있습니다.

IMPORT

// AKKA
import akka.actor.typed.ActorRef
import akka.actor.typed.Behavior
import akka.actor.typed.SupervisorStrategy
import akka.actor.typed.javadsl.AbstractBehavior
import akka.actor.typed.javadsl.ActorContext
import akka.actor.typed.javadsl.Behaviors
import akka.actor.typed.javadsl.Receive

// PEKKO
import org.apache.pekko.actor.typed.ActorRef
import org.apache.pekko.actor.typed.Behavior
import org.apache.pekko.actor.typed.SupervisorStrategy
import org.apache.pekko.actor.typed.javadsl.AbstractBehavior
import org.apache.pekko.actor.typed.javadsl.ActorContext
import org.apache.pekko.actor.typed.javadsl.Behaviors
import org.apache.pekko.actor.typed.javadsl.Receive


Config

application.conf
pekko {
  loglevel = "INFO"
  loggers = ["org.apache.pekko.event.slf4j.Slf4jLogger"]
  logging-filter = "org.apache.pekko.event.slf4j.Slf4jLoggingFilter"
}
  • akka 작동방식을 정의하는 conf 도 prefix명 변경~ 이외 설정은 동일

BSD VS BSL

BSD 라이선스와 BSL(Business Source License) 라이선스는 오픈소스 라이선스의 종류로, 각각 소프트웨어의 사용 및 배포와 관련된 권리와 제한 사항이 다릅니다. 주요 차이점을 비교하면 다음과 같습니다.

1. BSD 라이선스 (Berkeley Software Distribution License)

  • 종류: BSD 라이선스는 여러 버전이 있지만, 가장 일반적인 것은 2-Clause BSD와 3-Clause BSD입니다.
  • 자유도: 매우 자유로운 라이선스입니다. 소프트웨어의 상업적 사용, 수정, 배포가 자유롭습니다.
  • 배포 요구사항: 소프트웨어를 수정하거나 재배포할 때 저작권 표기 및 원래 라이선스를 유지해야 합니다. 상업적 목적으로 사용하거나 배포할 때도, 원작자에게 크레딧을 주는 것 외에는 제한이 거의 없습니다.
  • 특징: 라이선스가 매우 단순하고 사용에 거의 제한이 없기 때문에 오픈소스 커뮤니티에서 많이 사용됩니다.

2. BSL (Business Source License)

  • 종류: BSL은 오픈소스 라이선스와 상업 라이선스의 중간 형태입니다.
  • 제한된 자유도: BSL은 소프트웨어를 일정 기간 동안은 상업적 사용에 대해 제한을 두지만, 그 기간이 지나면 완전히 오픈소스(BSD 또는 다른 자유 라이선스로 전환)됩니다.
  • 사용 및 배포: BSL은 주로 소프트웨어가 특정한 비즈니스 목적으로는 유료 또는 제한된 사용만 허용하고, 정해진 시간이 지나면 자유롭게 사용할 수 있도록 설계되었습니다. 즉, 일정 기간 동안은 소스 코드가 공개되더라도 사용에 제한이 있을 수 있습니다.
  • 전환: 통상적으로 라이선스가 적용된 소프트웨어는 몇 년이 지나면 BSL에서 BSD 또는 다른 오픈소스 라이선스로 전환됩니다.

요약

  • BSD 라이선스: 매우 자유롭고 제한이 거의 없음. 상업적 사용에도 제약이 없음.
  • BSL: 일정 기간 동안 상업적 사용에 제한이 있으며, 시간이 지나면 자유 라이선스로 전환됨.

BSL은 주로 비즈니스적인 이유로 소프트웨어 개발사들이 선택하는 반면, BSD는 오픈소스 커뮤니티에서 널리 사용되는 보다 자유로운 라이선스입니다.






  • No labels