What is our primary use case?
We use
Apache Flink for enterprise orchestration, mostly for Walmart, which has many use cases for retail. We use it for our transportation, for the merchant use case related to suppliers, and for customer orchestrations.
What is most valuable?
What I appreciate best about
Apache Flink is that it's open source and geared towards a distributed stream processing framework. We use it on the transportation side for real-time or near real-time data with low latency and high output, ensuring eventual consistency. Most of our event-driven applications utilize Apache Flink, alongside Spark and Kafka streaming. From the core components, we also use data streaming APIs, tables or SQL APIs, and state management, along with Flink connectors for integrations with Kafka, JDBC connections, file systems, and more.
We have numerous use cases for complex event processing, particularly concerning suppliers needing real-time data on store performance for predictive pattern detection, which involves complex space management and model creation for dispatching. We are also exploring Apache Flink ML focused on machine learning libraries, though this is currently in the early stages.
What needs improvement?
Apache Flink is very powerful, but it can be challenging for beginners because it requires prior experience with similar tools and technologies, such as Kafka and batch processing. It's essential to have a clear foundation; hence, it can be tough for beginners. However, once they grasp the concepts and have examples or references, it becomes easier. Intermediate users who are integrating with Kafka or other sources may find it smoother. After setting up and understanding the concepts, it becomes quite stable and scalable, allowing for customization of jobs.
Every software, including Apache Flink, has room for improvement as it evolves. One key area for enhancement is user-friendliness and the developer experience; improving documentation and API specifications is essential, as they can currently be verbose and complex.
Debugging and local testing pose challenges for newcomers, particularly when learning about concepts such as time semantics and state handling. Although the APIs exist, they aren't intuitive enough. We also need to simplify operational procedures, such as developing tools and tuning Flink clusters, as these processes can be quite complex. Additionally, implementing one-click rollback for failures and improving state management during dynamic scaling while retaining the last states is vital, as the current large states pose scaling challenges.
For how long have I used the solution?
I have been using Apache Flink for the last five years, and we have multiple enterprise products that we use with it.
What do I think about the stability of the solution?
In terms of stability, every system exhibits some challenges, particularly when customized through lift and shift. In general, Apache Flink is very stable, but it can face failures during customization.
Stream processing at scale shows stability, yet I sometimes encounter timeouts with long-running jobs, indicating a need for optimizations in failure recovery. Cluster upgrades and compatibility with saved points need improvement. Despite these challenges, Apache Flink remains quite stable; every product evolves and introduces new features, which can lead to optimization needs.
What do I think about the scalability of the solution?
I rate the scalability of Apache Flink an eight because it is quite scalable, but we need improvements in API documentation and state management.
How are customer service and support?
Apache Flink does not offer enterprise software support, so companies rely on community support, such as mailing lists and forums, along with
Slack channels. There is also the option to create issues on
GitHub or check Stack Overflow for help. While some may have customizations or use cloud services offering specific support, it's essential to understand that community support is strong for Apache Flink, making it a viable option for many users despite lacking dedicated enterprise support.
How would you rate customer service and support?
What other advice do I have?
The integration process for Apache Flink can be approached in two ways. The first method involves running it as an independent standalone service, where you create your own clusters and systems, and then submit jobs that connect to it. This approach is more reliable for stream analytics, ETL, or continuous data processing, as it handles scaling and fault tolerance. You can connect with REST APIs, SQL gateways, or JDBC, which is a standard and easier approach. The second option is embedding Apache Flink directly into your application, which is rarely used and mainly suited for simpler tasks. Nonetheless, I recommend running Apache Flink as a standalone service for distributed real-time processing.
I recommend Apache Flink to others, particularly for new teams assessing whether it is the right solution. Despite competition from Kafka streams and Apache Beam, Apache Flink stands out for its scalability, stability, and persistence capabilities. Personally, I have promoted its integration within Walmart, advocating for its use across eight to nine teams, as I am a big fan of data streaming and processing tools. Given its proven track record and stability in production, I confidently recommend it to anyone exploring unified batch processing or streaming databases with SQL or the table API.
On a scale of one to ten, I rate Apache Flink an eight overall.
Which deployment model are you using for this solution?
On-premises
If public cloud, private cloud, or hybrid cloud, which cloud provider do you use?
Other