APIs and Microservices With Go
This is a modal window.
The media could not be loaded, either because the server or network failed or because the format is not supported.
Formal Metadata
Title |
| |
Title of Series | ||
Part Number | 26 | |
Number of Parts | 169 | |
Author | ||
License | CC Attribution - NonCommercial - ShareAlike 3.0 Unported: You are free to use, adapt and copy, distribute and transmit the work or content in adapted or unchanged form for any legal and non-commercial purpose as long as the work is attributed to the author in the manner specified by the author or licensor and the work or content is shared also in adapted form only under the conditions of this | |
Identifiers | 10.5446/21242 (DOI) | |
Publisher | ||
Release Date | ||
Language |
Content Metadata
Subject Area | ||
Genre | ||
Abstract |
|
EuroPython 201626 / 169
1
5
6
7
10
11
12
13
18
20
24
26
29
30
31
32
33
36
39
41
44
48
51
52
53
59
60
62
68
69
71
79
82
83
84
85
90
91
98
99
101
102
106
110
113
114
115
118
122
123
124
125
132
133
135
136
137
140
143
144
145
147
148
149
151
153
154
155
156
158
162
163
166
167
169
00:00
Software engineeringInternetworkingCartesian coordinate systemDebuggerOrder (biology)Java appletLibrary (computing)2 (number)Replication (computing)TwitterGroup actionPhysical systemImage registrationCASE <Informatik>Online helpArmCodeGame theoryMonster groupSoftware developerMoment (mathematics)Self-organizationBlock (periodic table)DatabaseMobile appLie groupUniqueness quantificationComputer configurationSpring (hydrology)Network topologyTowerSoftware frameworkScalar fieldCompilation albumAnnihilator (ring theory)Goodness of fitServer (computing)Revision controlDialectEndliche ModelltheorieResultantPoint (geometry)Natural languageDependent and independent variablesFamilyLine (geometry)Reading (process)System callMathematicsUniverse (mathematics)DeterminismNumberService (economics)Source codeEvent horizonExecution unitPredictabilityFormal languageSet (mathematics)Wave packetProcess (computing)Schmelze <Betrieb>Lecture/Conference
08:23
Exception handlingWater vaporGame theoryDivisorRule of inferenceSoftware developerServer (computing)Type theoryProcess (computing)Key (cryptography)Right angleSystem callCompilerAdditionGodCartesian coordinate systemOffice suiteSoftware testingSpacetimeLevel (video gaming)CASE <Informatik>Library (computing)Pattern languageBuffer solutionInterface (computing)ForestTask (computing)Formal languageEndliche ModelltheorieTelecommunicationTerm (mathematics)Letterpress printingDisk read-and-write headImage registrationTorusGoodness of fitPoint (geometry)Functional (mathematics)Graph (mathematics)Dependent and independent variablesInternet forumHypermediaNumberFrequencySocial classArmBoilerplate (text)Virtual machineJava appletConcurrency (computer science)Message passingPrincipal idealModal logicTheory of everythingStandard deviationEmailPlanningCodeBoss CorporationOrder (biology)WordMetropolitan area networkLecture/Conference
16:45
BefehlsprozessorTelecommunicationCartesian coordinate systemSemiconductor memoryException handlingArithmetic progressionProcess (computing)Replication (computing)Error messageFunctional (mathematics)Computer programmingOperating systemCoroutineSheaf (mathematics)Graph coloringFocus (optics)Traffic reportingPresentation of a groupSet (mathematics)Dependent and independent variablesGoodness of fitDifferent (Kate Ryan album)Electronic mailing listReal numberPerspective (visual)Java appletWater vaporBit rateComputer wormEmailCodeInterface (computing)Range (statistics)Variable (mathematics)Object (grammar)ResultantSource codeIntegrated development environmentOrder (biology)Level (video gaming)String (computer science)State of matterElectronic visual displayType theorySoftware testingMultiplication signProgram slicingVideo gameGroup actionSystem callConfiguration spaceCore dumpShared memoryThread (computing)Green's functionMetropolitan area networkConcurrency (computer science)Directed graphLoginAnalytic continuationRight angleFunction (mathematics)Line (geometry)2 (number)Lecture/Conference
25:08
Gastropod shellCartesian coordinate systemJava appletMultiplication signFeedbackProcess (computing)Task (computing)String (computer science)Cache (computing)Software testingWeb 2.0Right angleJust-in-Time-CompilerNumber2 (number)Order (biology)Electronic program guideConnected spaceIdentity managementDigitizingAlphabet (computer science)Source code
27:35
Maxima and minimaCodeCartesian coordinate systemInternetworking2 (number)Water vaporForestComputer animationSource code
28:55
Software testingCodeNumber2 (number)Computer animationSource code
29:35
Cloud computingMaxima and minima2 (number)CodeSource codeComputer animation
30:14
Cloud computing2 (number)Maxima and minimaCartesian coordinate systemNumberVideoconferencingElectronic mailing listSoftware testingCodeConnected spaceUniform resource locatorSource codeComputer animation
31:21
Curve fittingCodeLimit (category theory)2 (number)Software testingConfiguration spaceSource codeXMLComputer animation
32:25
Metropolitan area networkBit rateProjective planeDevice driverMetreComputer configurationCartesian coordinate systemMultiplication signStack (abstract data type)Connected spaceCodeLibrary (computing)GodStrategy gameField (computer science)Electronic mailing listValidity (statistics)InformationCoroutineDecision theoryScaling (geometry)Cache (computing)DatabaseQueue (abstract data type)Reading (process)Service (economics)WritingProcess (computing)Repository (publishing)Order (biology)MereologyMathematical optimizationEvent horizonLogic gateSystem callMoment (mathematics)CircleFile formatTask (computing)Renewal theoryServer (computing)Dependent and independent variablesReplication (computing)Form (programming)Video gameRight angleFormal grammarGame theoryInternetworkingInteractive televisionComputer animation
38:04
Metropolitan area networkArmInheritance (object-oriented programming)Revision controlSoftware testingPoint (geometry)MereologyTask (computing)Error messageCodeLatent heatCache (computing)Computer animation
39:44
Multiplication signWebsiteInformationComputer configurationObject (grammar)Image registrationContent (media)Process (computing)Arithmetic meanOracleSemiconductor memorySoftware frameworkOpen sourceRight angleDirected graphRevision controlCartesian coordinate systemResultantMorphingFormal languageService (economics)MathematicsTerm (mathematics)Line (geometry)Replication (computing)WordDecision theoryGraphical user interfaceCoroutineReading (process)Execution unitSimplex algorithmDefault (computer science)Front and back endsCodeThread (computing)BootingCore dumpCoprocessorSynchronizationLibrary (computing)Java appletStandard deviation2 (number)Server (computing)Goodness of fitWechselseitiger AusschlussLengthInsertion lossWritingLogicDatabaseComputer animationLecture/Conference
Transcript: English(auto-generated)
00:01
Yes, so Let's welcome Vinicius Pacheco and he'll talk to us about API and APIs on microservices with Go It's my golfer. Like because this because of him. I'm starting to code Golang
00:26
What I will talk this talks about API and microservices it's not a talk only about Golang is about engineer so I I'm Vinicius Pacheco, if you went to talk with me by Twitter is the best option and
00:46
I'm a software engineer at globe.com. I'm a teacher at CAEL, it's a good school in Brazil. I'm a Brazilian guy and I'm a jungle girls organizer and theologist because we need faith to compile code and
01:07
Someone know what is globe.com Yeah, it's great. So globe.com is a great group global. It's a great globe group in Brazil in Brazil
01:21
We have television cable television newspaper I think 50 50 channels cable channels from globe.com and we have a portal globe.com
01:40
globe.com is the arm of for group global and internet and What is our agenda? It's a real case. It's not a fake app. It's a real case. What happened with me at globe.com so Where I can use
02:02
Where can I use? Golang It's a real case you will see An advice my English is really really really bad if you don't understand You up your hand and I don't understand. Can you repeat please?
02:22
I will repeat and you don't understand again. I don't understand again. Can you repeat please? I will repeat in Spanish because It's great for me and oh, I can't understand please. Oh I Repeating Portuguese and it's not so good. I will
02:42
Take help for my Brazilian friends. They talk they speak English very well So our agenda at first the metrics after that the problems the road and the solution The metrics from globe.com. We have more than 15 million access per day
03:06
Unique access, it's not a repeat access. It's not all Two people access globe.com twice. No unique access 50 millions and a quiz and simple quiz like what's the best player in the world play soccer in the world and
03:25
quiz like this four hundred four thousand requests per second and We have a PIs like a game of kind soccer gamify soccer's place and other API's
03:42
generate 300,000 requests per seconds with in the top moment and 900 requests 900,000 requests per seconds and now we're VIP All all globe.com is by
04:04
As From world to big data and the recommendation recommendation deals and show TV shows and soap opera by the port internet by the internet and Get user from
04:21
User log it is easier Okay, and Where am I and these numbers? My team at globe.com is globe yg global ID and It's the API to register the new users at globe.com and the serve all orders
04:43
72 teams at the global globe.com and the other five companies from group of global so if you do a new register and you and your registration at globe.com and you use my API and Is the topics of this
05:04
And our X system is it is a tower we have At first our front end Is written with a scalar and Play framework and
05:23
They send the requests for two monoliths API's big monoliths API's with 14 years old monoliths API's written in Java The monolith API On your right side my left side
05:42
as written with spring tree because he was Refactoring year by year, but it's not so good. And the other is pure Java with server servlets and EJB in the version 2.2, I think
06:02
and Our database is Oracle. Yes. He's scary. I know it's terrible. He's a freak What What are a monolithic you thinks this? with like a big as a big block of code with all things and
06:26
Organized by the OOP and It's a lie The truth is it It's the truth When you look a monolithic a monolithic is terrible luck and and think with me
06:45
14 years of This miss the same monolithic Look good developers. Just as push code for this bad developers commit code and The
07:02
Is tigerese commit code Trini's commit code. It's terrible. It's difficult and These two there's this stack this big stack two monsters two monolithic monsters do only two Henry registrations per second and
07:25
Are two big monoliths that we need to maintain and It's all difficult to change a little library and the risk of the play is huge and Merged are numerous and dangerous
07:41
It's not a good place to work Let's move to new artiture and I like a lot the sentence of Mario Fusco When you think a microservice you think all is a little application. No, it's wrong
08:03
Microservices not only replication is a bigger application a big stack. It's not You you can't think this this thing's terrible and Microservices is not because the size of the application The important is what he do
08:22
What the microservice do is important because this is me micro is micro not because the size of the application Micro because you need to think oh, but there's constability arms and My team starts to do a
08:45
Job to create a new stack and the many developers there are Java developers and the other developers are Python developers and All the develops are I don't know
09:00
Manifocal developers, maybe and We create the first child to be the first stack to test was called Kratos Because the game because the Kratos killed the gods and the two big monolithic is our gods
09:20
So we need to just do this this thing So we started to write to the code with undertall, you know, what is undertall anyone know, okay J boss has a server about server container as white flight
09:41
The engine of the white flight is undertall is that think more is the more fast handler for Java and Faster than Under tall is neti but next you need to know the size of the request all requests you need to know the size and
10:01
Under tall, you don't need to know the size of the request. So Under toes friendly for developers friendly for develops Look at cults friendly for develops. We started to write with undertall and was a Sunday I Don't have beta and
10:25
My wife slapped with gins had slapped with gins and I start to write the same application in go Because I like go Why not other language because I like to go I have a go for man
10:41
So I start to write and globe that's called we have a team the name of the team is key a2 the key a2 is a team for tests of the stressor tests and Under tall pass for this test and they put the order application and I call it by golem and
11:02
Why golem because data is precious? It is my precious so I start to write the code with To golem and the put in secret to the key a to 10 K to 10 made the tests and was more perform ugly than
11:25
the Java application So my team looked the numbers and the oh Creators is so fast. Oh, what will you do and I speak is not Kratos
11:41
It's golem and golem there are more not moderation for his name because our Our golfer when made a library Put the goal like a prefix of the name like Batman, you know Batman the bat model the bat
12:02
phone the bat, you know silky and The golfers but go go. Okay, golem good and What girl gift for us Simplicity is simply it's more simple simple than than Java and
12:24
The center library is really complete. I don't need a server It's not necessary Jason translator, it's not necessary Our PC to communication it's not necessary Nothing, the all is inside the standard library of go
12:46
is compiled so it's near of the machine as My language to high performance The concurrence of with goal is for babies it's really easy to write a conference called with Golang and
13:05
We have a lot of tools many tools fantastic tools and There are native API For HTTP 2 it's great for us and a great documentation
13:20
So the simplest e look this Under tall hello world great, no let a Class and the method main to run because it's a giant is a genius of the The servant so you don't need it put inside the container. He's provided and
13:45
You start at the builder of the undertall after that put the listener 8080 port localhost and after that you set your new handler and The writer handler with a lot of boilerplate and
14:06
But What type you return on and your handler is a tax playing and after that? You write your hello ward build and start easy
14:21
So cute Look I'm ironic, okay The same with go I imported I Put the package the principal packed all low code started from the main package The main package is death first the principal
14:41
The main of the application all called of girls start from the main package and the main function. It's a reserved function of the Golang and We start the handler and put the response and the request and I will print hello word Put the handler
15:02
Registration my halt and after that listen and serve and 88 port What Okay
15:21
This case will return a taxi plane because he's identify the Text really hello ward, but not a good practice The good practice to do this faster As you set on the header the return but I will use I've been used the F-print LN so the f-print LN return
15:44
Text plane Okay, if I I want to write a low-level I don't use FMT package Okay, it's a it's a friendly interface for developers If you want right go go cold, you don't use you can't use
16:05
FMT and the other package was roast for performance so Tests with goal. Oh, I need to import a package for tests
16:22
To do unitary tests. No, it's not necessary. Go give this for us and I Put the log to know what happened. I'm port the net HP and look this fantastic HP test
16:40
Look to mock your request that's great and The test package I Create a funk to test the handler. Oh, that's handler and import the Test restriction stretch after that. I create my new request
17:02
real request Okay, my real request if an error happen, I will lock the error and After that, I create my fake response Create my fake response and the set for my handler
17:24
Take the code this touch different of Okay Return the error with the okay Looks hello world It's easy to test a handler nice
17:40
And how can I do to Give a JSON for my user Is it I have a function in Portuguese. Sorry and via JSON is send JSON in English and I will return two things an array of button a slice of bytes and
18:03
An error because go and go don't don't have exceptions Is this elegant? yeah, what Pike said this and The
18:22
Exceptions good, so We don't have exceptions and why because you is easier to to create your errors an error is an error that doesn't doesn't port what type of error is and Sorry
18:40
We put I get I have my package user my entity I create my entity it's doesn't matter is my user and I create a new payload and this payload. It's a map a string and the interface interface is Doesn't matter the object is like the the father of the objects
19:05
Interface, but look it's not only interface its interface with how the name of the sign-on I Don't know in English, please Braces good. So with braces and I set name the name of my user
19:21
email email of my user and put Jason Marshall with my payload I his right recept On update on Output and an error if happen if happen there if done ever happen I will return my ever if doesn't happen. I will return my output. It's a Jason
19:47
Nice and the two concurrence code It's only a higher overview. Okay, my concurrence code We can set My main function and there started
20:02
my first channel channeling goal is to communication is to share memory to communication between Go routines go routines are like IRS green threads Green threads. Sorry, it's not a real thread as all operational system threats is green threads
20:22
so I'm started the make a Channel other channel result in general rod jobs and after that Started three new workers. Look is a look worker one two and three and
20:42
I set value for my jobs and set value and Recept to the values of my jobs and close all the jobs So the code of the worker the worker code is a
21:00
range of the jobs and I reset the value from the jobs and Look then process time job. Let's let's see this Started to run Don't disappoint me go line
21:24
I don't know what happened. So I will show Wait a minute. I will show for you because their presentation ran the
21:43
The code and Being routines look the code the same code, okay, it's the same code
22:05
And then run not listen so doesn't matter, okay Continues and The concurrent spotter it is the real concrete spotter. Okay
22:22
in the real concrete spotter We did that we use the sink to synchronize it the go over teams. Okay, I Imported my login an API in a to to login and Configs my environment is my code and other code to connect from Redis. It's a real code. Okay, I
22:47
Man function I Start my config. I put the log and after that I start my Redis pool and run my goal routine
23:02
When I run my go routine I Called this function look I start a way to get up here This called this variable will wait all this the finish of the girl routines and
23:21
I added my girl routine and start an anonymous function to process when the anonymous function and the differ command will return hey great group you can stop it because the girl routines over and After that, I
23:43
Call the function process look Function process here and I called it my process This will be what it's a real code to consume it from Redis Curies from kills from Redis. I start this to consume a lot of process and recreate the requests
24:03
Okay the guy sent me a request for Golang application and they take all the requests and made a dump of the request and Set the all the requests on my Redis and QE on the call and why did that because we need to maintain the older application and we need to reproduce the
24:23
real requests or my fake request for the older application the old application and Why go I will show the tests At first I have a
24:42
Code here a Java code, it's a Fibonacci Look, it's a great code a Fibonacci code is fantastic and why because I use this all my life it's a joke and But it's good only to know what happens not to return a string and why I don't know a test with return
25:07
Hello world because Java Cached the strings So if I put the same string all the time, I don't test the handler or the process of Java application I test all the cache of the L L R U cache from Java application
25:26
So I put the Fibonacci and I will do the test this you have applications running and I have here on WRQ
25:41
pointed for the test I will have 62 connections, but for 10 second seconds and two threads, okay, I started the test
26:01
And zip 36 Thousand requests per second Okay, it's the number of the Java application and the Java application is interesting because When you run other time
26:21
Many times the Java same faster than the other time and why because the JIT JIT from Java is really performantly and very smart and was a Feel better look only a little feel better, so I will stop at this and
26:47
Started Ruby with Sinatra, okay to give API Started my room application and I don't use unicorn always ghee or nothing kind of this when why because if I use
27:05
Unicorn always ghee or kind of things I do and I put is her right on the gill or My handler it's not a truth test because I don't do that with I don't do that I don't do this with Java and I don't do this with gold
27:22
so I put in only web rig is okay and I Will do the test again the same test in the same port the same number the same Fibonacci order and Only to know the Fibonacci code of Sinatra is this
27:42
this code of the Sinatra application and Sinatra give for us 300 requests per seconds and You can look Is it 300 there requests per second
28:07
It's bad no 70% of the internet using don't don't don't do that It's not it's great for 70% of the internet if you have 50 million users in your API. It's a problem
28:20
maybe the same problem happened with Twitter, but If you do not common application is good and when you put Unicorns and whizzies and kind of things will be more perform at Lee and I
28:41
Will see the same with Python and flask Python and flasks Fibonacci the code of Flask is it
29:02
Okay, the flask code and when we look the test That I don't I not started I started that now 10 seconds 1800 requests per second
29:27
It's better than Sinatra and this really good number Okay So I will do the same
29:40
With tornado and tornado is really more perform ugly than flask for 10 seconds Oh
30:02
The tornado code there. It is the tornado code. Okay This this is the number
30:20
wondering how There looks good it's a great number and with unicorn and whiskey will be better and With tornado applications I made applications with 23,000 requests per seconds. Okay. It's the the max that I I want
30:44
with go with tornado and After tornado, I will do the same with go and start the go application
31:04
And I will do the same test all that connection refuse Yes. Oh The connection by 10 seconds and the code is it
31:29
code of Golang Fibonacci Golang is it? and was 38 found the request per seconds, but I don't use other
31:43
thing to do Go more faster than And now 39 But we have a problem with macbooks and why the problem Mac has a limit 4000 requests per seconds
32:01
So we need to change it to the pelest called the police configuration in your Mac to Have more requests per seconds Yes, it's true Yeah, and because this We need to do the test with Linux so go was perform a plea and it's the limit the limit of the Mac and
32:28
Go ahead if go because this We have a new project July There's Glee, believe it's like global. I think but in Brazil is July
32:41
because a global live Like global That's a good it's the part enough for our microservice at in the foot in the front we have an engine X and the sender engine X the engine X do the
33:01
The redirection of the request for our application and in order and not to all your application When we have a get they get Recept on the cache and read from the cache and opposed to an update or delete we process with Golang and write on the cache and the queue
33:21
the other micro service go microservices or Python microservices or any other micro service read from the queue the information and We have I have a lot of go routines read and writing and read and reading On the cache all the time and the put on the MongoDB
33:42
MongoDB is not our new database and why I don't know No, I know When the people ask me Oh, what's the debate you prefer? I spoke look, I prefer Cassandra and
34:01
I Don't have Cassandra have Mongo There are other option Yes My sickle, okay mongol Was my decision so and but mongol is difficult to scale and
34:25
When you set a lot of values in mongol 300 gigabytes They slow to give the information In the get process the get verb is really slow when you have three gigabyte 300 gigabytes
34:42
so the Solution was worked with this With a lot of go routines consume and write and consuming information all the time So when the engine X and the request for us and we take the engine X
35:00
We get the next and the regret the request and the put on the cache and after writing the cache We return to fuck to 200. Okay, or was created to 0 1 2 1 and The stay and
35:21
In the engine in the cache as the sufficient for us because the cache is with persistence time and persistence So it is our Stack our tools and G live application and
35:41
What we use it For the handler we use path and why because go is not friendly It's not so good to know the verbs like get and the polls and put we use this Muxer only to translate earth these things like you do with flask in Python application
36:03
You said it's like yet. It's like yet suppose we do that with Pat Negroni is for our meters This is only for meters. The DIGO is our Regis driver and
36:20
Mg, oh our mongol driver and am keep you our connection with Rap Tim Q and go that is to vendorizing the go code If you put all the repository of the goal is the git So when you do on the fly and you will build your code
36:44
the goal and take all the information from the git and it's dangerous because the he got the information he take the information from the master So it's dangerous. It's the best option. You're vendorizing your dependencies
37:04
Okay, that's fine because that's in goal many times are the ugly because you test with if if if if if all the time and Testify is you put the assert Assert, it's equal. Assert is okay, and we use this
37:23
Go validators is for validation we validation if a male is true or three male true names and the true things of fields and The goal tanks is to have a contains, you know contains in
37:44
your list God doesn't have strategy so I Write this library. It's not so good It's different arising cold looks like
38:02
Then luck if you worked with Ruby once and It's a vendorized code look the revision is the Git history of the commit Okay It's the test fight code
38:22
To give tests more beautiful and Look that when I made the tests with test fight I have What I
38:41
Have a beautiful not so beautiful code, but a friendly code to do many things look I created errors specific errors to return and Return a red sketch And it is the real code. So the mock of this is
39:05
the cache test I the mock look the mock here and create the mocks and use them set up my mocks and After start the setup code I
39:22
Will do the answered code if I don't use That's why I need to put If it's not new if da da da if baby, it's terrible okay, and
39:40
We always use the last stable version of the goal And why you don't stop it in the version because it's not good Is it it's cultural in Golang you change it for the the last stable version. You don't use older versions
40:00
and What's the result have to change it for Golang? Is it? Now we can registration all the logic of the register user and at the globe.com we can do with the 2,000 Requests to 4,000 24,000 requests per seconds use registrations per seconds not request registrations per second and
40:27
Do change it we change it from Two big monoliths monoliths to a pool of micro service nowadays are I think 60 mock micro services 50 micro services kind of things and
40:44
We use a lot of a lot and many many many many standard library We it's not too good. It's not so good in go. Do you use? Frameworks Because Look go has a big go. It's a copy of rails. Okay big goal is a couple of rails and
41:08
it's not good and why because you lost the performance of the language and It's the same for other Frameworks and the many standard libraries and it's easy to deploy because microservices has a unique
41:23
In Center code and Merges their to boot distributed and simpler then you can you need to merge with a big monolithic code So and what we do with the legacy
41:42
We have the legacy code run yet and why because it's a application with 14 years old You don't want to change this application in six months It's impossible. You need to maintain the coexistence So the request was receptive by the front-end the front-end don't change. This is in scala
42:06
so scala said to nginx or this service this this guy will be registered in g live or this guy will be registered in the older application in the next to the decision and
42:22
He Can go to the G live pool of microservice microservices pool or he can go to the monolithic application, but You need to maintain the database Synchronized and we did that with more goal applications the goal consider the G consumer and the sink
42:47
The sink take the information from oracle and write the information mongo and The consumer take the information from mongo and write information in oracle all the time all the time
43:01
Your routines look and look and look again okay, and I want to start I want to write api's with goal What I need to do I recommend a lot you read effective goal
43:22
It's an open source book on the on the site of go on the go lengths official website and there are two a to go language to loss the fear of the syntax and Go by example is a good option too and why because go by example
43:43
You need all I need and do a mutex there are an example I need to do a pool of workers and on an example and the go by example is good It's by example, and I don't know questions
44:12
Thank you my content if you want to speak with me You have a oh one question there. Hi. Hi
44:23
I don't side of using Java is Java consumes a lot of memory your servers have to Is is more expensive and what about go? Yes The consumer the goal application don't have a big consumer of memory comes from the process and
44:46
If you have a lot of go routines you need more process than memory look I Don't speak about this. But look this our stack at now. We change it from the
45:02
path to the fast HTTP That's HTTP is a new option and a new thing of the world more faster thing of the world to handlers and they create This guy create only two objects in the memory
45:21
It's you can use a sync pool and Buffering all your objects. It's an option too. So go don't consume a lot of memory you consume More processors more cores than memory because the routines run your OS threads and it happens Okay more question
45:43
There are any other questions Okay. Thank you a lot my contact and see you later