Learning A New Program Language For Developing Microservices
Learning A New Program Language For Developing Microservices
Author
Discussion

plasticpig

Original Poster:

12,932 posts

256 months

Wednesday 1st April 2020
quotequote all
Since I am on Furlough from today I have decided to spend some of the time brushing up on my developer skills. So the moment I am looking at Rust or Go for creating microservices; initially for reporting. Basically parsing JSON and turning to into a formatted PDF or XLSX file. I could use Java and one of the micorservices frameworks but that beats the object of the exercise. I have no experience of serverless computing so this is new territory for me.

So which one would you go for? Go appears to have better support for GCP and AWS which is a big plus. Rust seems to have more of a buzz about it.

Dammed auto correct! The title should be programming language banghead













Edited by plasticpig on Wednesday 1st April 10:07

aspender

1,406 posts

296 months

Wednesday 1st April 2020
quotequote all
Both are more systems languages, not really designed for micro service/API development.

If I were doing the same, from a purely personal perspective (i.e. not looking to build particularly marketable skills) I’d be looking at https://darklang.com/

Matt..

4,035 posts

220 months

Wednesday 1st April 2020
quotequote all
I'd be looking at local companies and the technology they use and using that to help decide.

Between Rust and Go I'd be choosing Go.

Edited by Matt.. on Wednesday 1st April 16:33

mikef

6,158 posts

282 months

Wednesday 1st April 2020
quotequote all
If you know java, how about kotlin and functional programming? You can drop into java for anything you can’t figure out, as it all compiles down to bytecode

Blown2CV

31,660 posts

234 months

Thursday 2nd April 2020
quotequote all
i guess the default first statement when it comes to microservices is that they aren't really a defined thing - they are more a set of principles and best practices that services should uphold. So, there isn't really a set of technical standards such as languages choices that come bundled with the idea, you can learn how to write a microservice in Java just fine.

Is that the answer you were hoping for? or were you more asking what are the languages that lend themselves best to the needs of writing services in this way... it isn't just the language, it's the whole stack and toolchain that need to be considered really.

plasticpig

Original Poster:

12,932 posts

256 months

Thursday 2nd April 2020
quotequote all
Blown2CV said:
iIs that the answer you were hoping for? or were you more asking what are the languages that lend themselves best to the needs of writing services in this way... it isn't just the language, it's the whole stack and toolchain that need to be considered really.
I was pretty much looking at using AWS or GCP. I want to play around with both to get a better understanding of their capabilities. My eventual aim is to be able to redevelop a traditional client / server application and move it to a SaaS model but at this point it's purely a learning exercise.







jesusbuiltmycar

5,136 posts

285 months

Thursday 2nd April 2020
quotequote all
plasticpig said:
I was pretty much looking at using AWS or GCP. I want to play around with both to get a better understanding of their capabilities. My eventual aim is to be able to redevelop a traditional client / server application and move it to a SaaS model but at this point it's purely a learning exercise.
Sounds like an interesting project, there is nothing like hands on coding to get a feel for a systems capabilities.

I assume that you will opt for REST interfaces between you service or are you thinking about something that is more low level?

I have a reasonable amount of experience with microservice based systems developed in C++, C# and now Java + Oracle's BPM. I was the lead engineer on C# system and designed/developed it such it supported REST and a fast binary inter-service messaging using standard sockets. The Oracle BPM system uses WSDL which is a fore-runner to REST.

130R

7,114 posts

237 months

Thursday 2nd April 2020
quotequote all
jesusbuiltmycar said:
I have a reasonable amount of experience with microservice based systems developed in C++, C# and now Java + Oracle's BPM. I was the lead engineer on C# system and designed/developed it such it supported REST and a fast binary inter-service messaging using standard sockets. The Oracle BPM system uses WSDL which is a fore-runner to REST.
REST (JSON) is certainly far more lightweight than old school SOAP but for a proof of concept exercise I would also look at gRPC

Blown2CV

31,660 posts

234 months

Thursday 2nd April 2020
quotequote all
plasticpig said:
Blown2CV said:
iIs that the answer you were hoping for? or were you more asking what are the languages that lend themselves best to the needs of writing services in this way... it isn't just the language, it's the whole stack and toolchain that need to be considered really.
I was pretty much looking at using AWS or GCP. I want to play around with both to get a better understanding of their capabilities. My eventual aim is to be able to redevelop a traditional client / server application and move it to a SaaS model but at this point it's purely a learning exercise.
the hardest bit by far.... like really really far.... is the functional decomposition of something like that, what do the data structures look like, what do the service functions look like, because they both need to be meaningful to the business and not just confusing specialist IT mess. The tech is the easy bit.

plasticpig

Original Poster:

12,932 posts

256 months

Thursday 2nd April 2020
quotequote all
jesusbuiltmycar said:
Sounds like an interesting project, there is nothing like hands on coding to get a feel for a systems capabilities.

I assume that you will opt for REST interfaces between you service or are you thinking about something that is more low level?

I have a reasonable amount of experience with microservice based systems developed in C++, C# and now Java + Oracle's BPM. I was the lead engineer on C# system and designed/developed it such it supported REST and a fast binary inter-service messaging using standard sockets. The Oracle BPM system uses WSDL which is a fore-runner to REST.
Familiar with SOAP or at least consuming SOAP services in Java. REST would be the preferred solution.

Blown2CV

31,660 posts

234 months

Thursday 2nd April 2020
quotequote all
plasticpig said:
jesusbuiltmycar said:
Sounds like an interesting project, there is nothing like hands on coding to get a feel for a systems capabilities.

I assume that you will opt for REST interfaces between you service or are you thinking about something that is more low level?

I have a reasonable amount of experience with microservice based systems developed in C++, C# and now Java + Oracle's BPM. I was the lead engineer on C# system and designed/developed it such it supported REST and a fast binary inter-service messaging using standard sockets. The Oracle BPM system uses WSDL which is a fore-runner to REST.
Familiar with SOAP or at least consuming SOAP services in Java. REST would be the preferred solution.
as much as you might have complete design control on how your microservices expose their interfacts, there may be systems of fulfilment downstream that you cannot design in the same way, so you may need a wide range of experience in writing consuming code.

plasticpig

Original Poster:

12,932 posts

256 months

Thursday 2nd April 2020
quotequote all
Blown2CV said:
as much as you might have complete design control on how your microservices expose their interfacts, there may be systems of fulfilment downstream that you cannot design in the same way, so you may need a wide range of experience in writing consuming code.
Well I will tackle that bridge if I come to it. I have 3 months of pretty much uninterrupted time to just concentrate on learning new stuff. If I can squeeze some useful generic microservices out of it for future use so much the better.





Tuna

19,930 posts

315 months

Thursday 16th April 2020
quotequote all
If you're looking at serverless/microservices I'd consider Python - it's a favourite with the cool machine learning kids, works with stuff like AWS Lambda and doesn't run the risk of dropping out of favour as much as some of the new upstarts. Not as cool as Go, Rust, Dart, Kotlin, Webassembly and all the rest, but there's a lot you can do with it.

Much of the important stuff to learn is around CI/CD, infrastructure as code and software defined deployments - so even if you stick with boring old Java (make sure you're using the latest stuff to get rid of boilerplate - Spring Boot and Lombok as a bare minimum), there's a lot to do with SAM, cloudformation and all the other tools to compose a meaningful application.

Ynox

1,754 posts

210 months

Thursday 16th April 2020
quotequote all
Lombok has been a bit hit and miss. We tried it and didn't particularly like it.

Python is a good shout. I always enjoy coding in it. My latest project has been in Node which has been fun, although most of what I do is still Java.

Go is nice, although a little esoteric. I've only spent an evening playing about with it.

plasticpig

Original Poster:

12,932 posts

256 months

Thursday 16th April 2020
quotequote all
Tried Python a few years back. I am dyslexic and couldn't cope with code blocks without terminators. Some weird inabillity to visualize blocks with just indentation and no braces so found it very difficult to read the code.

Z064life

1,926 posts

279 months

Wednesday 22nd April 2020
quotequote all
I am in cloud and DevOps and got laid off. Also using the time to upskill.

Not heard of dark Lang but will check it out.

I'd say that micro services development is more about architecture then language so for example using DDD, CQRS etc. Maybe some languages lend themselves better to being immutable.

Just building out my DevOps lab and doing real world projects etc.

richatnort

3,204 posts

162 months

Wednesday 22nd April 2020
quotequote all
Working in a big forward looking software delivery company the biggest technologies the devs i work with are using is Kotlin which seems to be pretty impressive. Other things to look at too which more & more companies are embracing are; Kafka, GraphQL, AWS (look at their courses), kubernetes.