I would second Konrads suggestion of going with the Cassandra version. I 
have had great experiences with that, and the AWS DynamoDB community 
version (Albeit it lacked a lot of features and we ended up porting our own 
version and bug fixing/extending it. Surprisingly this ended up being a lot 
easier than I was expecting and we began by rethinking the testing on the 
library first to verify our understanding of its behaviour).

The real question is - Have you tried using Akka persistence in your test 
environment? Or even locally on your own PC? (It's easy to spin up 
Cassandra on your PC from my memory of doing it).

If your considering going towards Event Sourcing then be aware that it can 
be tricky, long term in production (Having used it for 3 years) event 
adaptation and migration becomes mandatory to understand and integral. You 
really wish you'd knew about it on day one when you designed your persisted 
events.
If you run a cluster topology then transient errors in your cluster which 
for all intents and purposes may even go unnoticed - can mess with your 
stored events and cause critical failure at the point you try to restart 
the application - several days after that network blip manifested!

Will you choose Protobuf for your database entities and then have problems 
interrogating your production data if your system fails to start up? Will 
you write your own serializer/use something like JSON so that you can debug 
this one day?

There are many topics to understand before you should be making the call on 
which one of these journals to use in production and I suggest you try out 
running a cluster somewhere with persistence implemented and a continuous 
integration pipeline that deploys on every commit without downtimes. See if 
you can support keeping it alive and have the necessary practices in place 
to remedy issues with it. Load test it heavily with tools such as Gatling 
or Apache JMeter - nothing causes nodes to drop out of the cluster quite 
like huge stop the world garbage collections when you run at scale!

I don't mean at all to scare you off - writing applications which scale 
well horizontally and utilize advanced patterns such as Event Sourcing (And 
receive all the benefits which that comes with!) is hugely rewarding and 
gives your software a definite edge over other architectures. But do try to 
make sure that you understand what the cost is of having them and the extra 
architectural, maintenance and support implications it may have on your 
product.

Perhaps have a read of: https://martinfowler.com/eaaDev/EventSourcing.html 
If your thinking of heading in that direction - then try to understand how 
it is Akka designed great solutions for each of the problems that this 
architecture poses.

On Wednesday, 29 November 2017 16:22:39 UTC, Konrad Malawski wrote:
>
> LevelDB is not, in any case, intended for production systems.
>
> Production ready journals would be:
> - the cassandra one, maintained by the akka team, it is most mature and 
> has most features
> - the jdbc one, community maintained but seems to work well
> - we’ve heard of people using the mongo one, but I can’t say if that’s a 
> good idea, likely not?
>
> Happy hakking
>
> -- 
> Cheers,
> Konrad 'ktoso <http://kto.so>' Malawski
> Akka <http://akka.io/> @ Lightbend <http://lightbend.com/>
>
> On November 30, 2017 at 1:13:58, Dobrin Ivanov ([email protected] 
> <javascript:>) wrote:
>
> Hi,
>
> I'm trying to investigate whether to use akka persistence in production 
> using java.
>
> I've been looking at 
> https://doc.akka.io/docs/akka/snapshot/persistence.html
>
> And also tried this example : 
> https://github.com/akka/akka-samples/tree/2.5/akka-sample-persistence-java
>
> The article refers to (native LevelDB) 
> https://github.com/fusesource/leveldbjni while the example refers to 
> (some java LevelDB port)  https://github.com/dain/leveldb ... not sure 
> why?
>
> Simply changing to use the native one in the example does not work: 
> java.lang.NoClassDefFoundError: org/iq80/leveldb/impl/Iq80DBFactory
>
>
>
>
> Q1: So if I do not need a cluster/failover/replication (or i my want to do 
> it myself for example) then can I use LevelDB in production? And if yes - I 
> guess it should be the native one?
>
>
> Q2: Then the article recommends replicated journals. So does anybody use 
> akka-persistence-jdbc OR okumin/akka-persistence-sql-async in production 
> for example?
> Are there any recommendations?
> I guess they can be used in java too and not only in scala but please 
> correct me if I'm wrong.
>
> Thanks!
> (inexperienced akka user)
>
> --
> >>>>>>>>>> Read the docs: http://akka.io/docs/
> >>>>>>>>>> Check the FAQ: 
> http://doc.akka.io/docs/akka/current/additional/faq.html
> >>>>>>>>>> Search the archives: https://groups.google.com/group/akka-user
> ---
> You received this message because you are subscribed to the Google Groups 
> "Akka User List" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to [email protected] <javascript:>.
> To post to this group, send email to [email protected] 
> <javascript:>.
> Visit this group at https://groups.google.com/group/akka-user.
> For more options, visit https://groups.google.com/d/optout.
>
>
-- 


Notice:  This email is confidential and may contain copyright material of 
members of the Ocado Group. Opinions and views expressed in this message 
may not necessarily reflect the opinions and views of the members of the 
Ocado Group. 

 

If you are not the intended recipient, please notify us immediately and 
delete all copies of this message. Please note that it is your 
responsibility to scan this message for viruses. 

 

Fetch and Sizzle are trading names of Speciality Stores Limited and Fabled 
is a trading name of Marie Claire Beauty Limited, both members of the Ocado 
Group.

 

References to the “Ocado Group” are to Ocado Group plc (registered in 
England and Wales with number 7098618) and its subsidiary undertakings (as 
that expression is defined in the Companies Act 2006) from time to time. 
 The registered office of Ocado Group plc is Buildings One & Two, Trident 
Place, Mosquito Way, Hatfield, Hertfordshire, AL10 9UL.

-- 
>>>>>>>>>>      Read the docs: http://akka.io/docs/
>>>>>>>>>>      Check the FAQ: 
>>>>>>>>>> http://doc.akka.io/docs/akka/current/additional/faq.html
>>>>>>>>>>      Search the archives: https://groups.google.com/group/akka-user
--- 
You received this message because you are subscribed to the Google Groups "Akka 
User List" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/akka-user.
For more options, visit https://groups.google.com/d/optout.

Reply via email to