SpringOne Tour conference is presented in Istanbul on 11.09.2018. It was the first time in Istanbul Turkey. The conference was really great. It was full of information and technology. Let’s dive into the details.
8.40am – Setting Up
To begin with, Pivotal started the conference very nicely. After our breakfast, we have found our seats to start to the conference.
8.45am – Welcome
It was nice that the Pivotal team has learned some Turkish words to show their kindness. Moreover, they started with a sentence “Thank you, Istanbul!”. Thank you too Pivotal!
9.00 – Reactive Spring with Spring Boot 2.0
In the first place, Mark Heckler started with Reactive Spring. We, the developers were so thirsty for that topic. Reactive programming is a new trend for development. We know some information about it and we wanted to get more! It is so important because of the non-blocking architecture. That boosts up our hungry for speed web apps.
Main topics of Reactive Spring
- Reactive programming means to program the apps in a non-blocking way.
- In Spring, it is called “WebFlux framework”.
- The main data types are “Mono” and “Flux”.
- Mono is for zero or one objects.
- Flux is for zero or many objects (generally lists).
- In Reactive programming, you “subscribe” for the streaming content.
- A new media type is APPLICATON_STREAM_JSON.
- One important concept is “backpressure”.
- This mechanism must ensure producers don’t overwhelm consumers.
- The consumer can request a limited amount of data with “delayElements(Duration)”.
- You can include the library to your Spring Boot with “spring-boot-starter-webflux”.
To demonstrate, Mark Heckler has created us two projects: Reactive Spring Boot Server and a Reactive Spring Boot Client. These two projects demonstrated well the main concepts of Reactive Programming in Spring Boot.
After, Mark Heckler showed us how to write suitable tests for Reactive REST applications. Because the TDD is very important, special thanx to him for showing the testing phase.
- https://github.com/mkheck/FSRx (demo projects mentioned above)
- https://github.com/mkheck/kotlin-coffee-service (demo project which is written in Kotlin)
Thank you very much, Mark Heckler, we had a great time.
9.55am – Cloud-Native Spring
When the clock hit to 9.55, it was time for Josh Long, the starbuxman guy! He presented the Spring Cloud Components like Spring Cloud Netflix (Eureka), Hystrix, Client Side Load Balancer Ribbon, Spring Cloud Config, Spring Security and also how to use Zipkin. The presentation was really “bootiful”.
Main Topics of Cloud-Native Spring
- Spring Cloud Netflix provides the service discovery.
- Eureka instances can be registered and clients can discover the instances using Spring-managed beans.
- Hystrix clients can be built with a simple annotation-driven method decorator.
- Client Side Load Balancer: Ribbon.
- With Spring Cloud Config, you can easily manage your configuration in one place.
- The configuration stays in a Git repository.
- You don’t need to restart an instance to apply new config values.
- You don’t need to update all instances.
- Thus, you can only update the needed web service for the updated configurations.
- With Spring Security, you can easily filter the number of requests per user.
- Zipkin is a very handy tool to detect microservice network problems.
- You can easily connect app metrics to Zipkin with Kafka.
- You can send metrics for 1/10 or 1/100 portion of all requests.
Together with, Josh rocked the stage. You know he is a rock-star. For sure he told us more but those are the main parts of the presentation.
Also, Josh got his hands dirty with code. He demonstrated the components well.
You can get the contact info for Josh with the image below.
Thank you very much, Josh, it was really enjoyable and we had a wonderful time.
12.05pm – Bootiful Testing
Mario Gray was very good at showing us the TDD, unit testing and the integration testing parts. Moreover, he told us about the Spring Cloud Contract.
Main Topics of Bootiful Testing
- SpringRunner class provides Spring Auto Configurations for testing Spring components.
- SpringBootTest annotation creates the whole Spring Context for testing purpose.
- With Spring Cloud Contract, you can create contracts between microservice applications.
- The contract is kept on a Spring Cloud Contract service.
- When a web service changes an endpoint, the tests start to fail.
- This failure informs other apps to update the parts in use.
- TDD is a “must” for developing our applications.
- They keep the components safe while development continues.
- While developing other parts, if it affects the old parts, tests start to fail.
- This provides the stability of other parts that are not being updated.
Thank you very much, Mario. Tests are really the most important part of the development.
You can get the contact info of Mario below. It is printed with the theme of OhMyZsh 🙂
At 2’o clock, we have attended to the open space. There have presented very exciting topics.
For the ones who don’t know open space:
- It is like a brainstorming session.
- There are different rooms available.
- There happen different presentations in each room during different time periods.
- First, attendees decide the topics.
- Then they vote on the topics.
- The topics with the highest votes are chosen.
- Chosen topics spread among the rooms and time periods.
- Any attendee can attend any room or session.
- Attendees also participate in the presentation part.
Obviously, you can see the room and sessions info in the below image.
In conclusion, we have chosen the below topics.
3.10pm – Room Main 1 – Microservices are evil
I have attended to the room main 1 at 3.10pm. Lemi Orhan Engin has managed the discussion. In summary, he has told us about his experiences with the microservice architecture. In addition, he asked about the problems if we have faced any. Also, he wanted to learn the thoughts about converting monolithic applications into microservice architectures. It was very informative and enjoyable.
Main Topics of Microservices
- We should always be careful about microservices.
- We must carefully convert monolithic architectures to microservices.
- Microservices have good sides as well as bad sides.
- Contract testing is really important.
- There must be a suitable team to build microservice architecture. The tools and used technologies are not very important.
Thank you very much Lemi Orhan.
3.45pm – Room Main 2 – Reactive
Later, my second open space was Reactive. Of course, it is the same topic as the first presentation. However, there were more details about the Spring WebFlux.
Main Topics of Reactive
- We use mono and flux.
- Reactive streams have methods same with Java 8 streams.
- Reactive systems must be non-blocking during every part.
- The reactive stream is transferred in flux or mono between each application component.
- The DBMS also must be reactive.
- Spring WebFlux framework provides a really good abstraction for reactive programming.
Notably, you can find really helpful resources in the below image.
Helpful Links (from the image)
Additionally, you can try out interactive diagrams of Rx observables at http://rxmarbles.com. I can guarantee that it is a very useful site to understand reactive stream methods like “filter”, “collect”, “reduce” and more.
Generally speaking, it was a very nice day. In summary, it was full of information about different kinds of topics. Later, we will have the second part the day after. Stick to my blog for the next day.
Also, do not forget to read my post about the Bridge Design Pattern.
For more information about SpringOne Tour, follow this link.