Hi Sotirios

I have always been someone trying to balance out the "developer 
productivity" vs "runtime efficiency". By only using a coding 
language/framework because you can code much quicker in it is almost 99% of 
the time going to bite you in the *** later. Sure if you just want to 
"prototype" something it doesn't matter. But how often does the prototype 
not become the starting point and turn into the "legacy" black-box nobody 
want to touch.

Consider for instance something like Gitlab written in Ruby vs Gogs (with 
Drone CI) both written in golang.

Gitlab requires about 2GB Memory (minimum) to run in production with as 
little as 10 users. If you have less than that Gitlab will feel really, 
really slow and even sometimes run into "out of memory" errors.

Now Gogs on the other side uses about 20MB of memory. Sure, Gitlab is at 
this point more mature than Gogs but is it sustainable? Consider having to 
host these two on DigitalOcean for example. You will need at least the 2GB 
Droplet for Gitlab whereas the 512MB Droplet will be more than sufficient 
for Gogs. You can even turn it up a notch. If you want to host 20 instances 
of Gitlab or Gogs. For Gitlab you will need 20 of the 2GB Droplets, adding 
up to $400/month. But for gogs the SINGLE 512MB will still be sufficient at 
$5/month.

Now that is enough on the Memory side. Golang can be built as a "static 
binary" which means the SINGLE binary file contains everything about the 
the application. Consider this article: 
https://blog.codeship.com/building-minimal-docker-containers-for-go-applications/,
 
where the static linked binary is a mere 5.6MB in size. If you take .NET 
you will probably need IIS and the .NET Framework on top of your 
application.

Golang also actually include the http server in this 5.6MB of static 
binary. So no need for another layer like IIS.

Just a handy tip. There are "awesome lists" of about any framework and 
language out there:

   - Curated list of them all: https://github.com/sindresorhus/awesome
   - Golang: https://github.com/avelino/awesome-go and 
   https://github.com/golang/go/wiki/Projects 
   - .NET Core: https://github.com/thangchung/awesome-dotnet-core




On Wednesday, 18 May 2016 16:06:30 UTC+2, Sotirios Mantziaris wrote:
>
> Dear Tim,
>
> We are a .Net house and we are running "windows services" for months 
> without having any problem. Sql Server, which is a very robust RDBMS, is a 
> windows service and runs rock solid for years. So the issues you mentioned 
> are mainly your own code issues.
>
> Windows has a feature called Task Scheduler where you can schedule 
> anything to run on a schedule if that is what you want.
>
> The claim that .Net is not heavily concurrent is not true either. You can 
> use TPL (Task Parallel Library) and run a really solid and performant 
> concurrent programming model with ease. 
> This will scale very nicely with the cores of your machine. Especially 
> when using Parallel.For which does some optimizations.
>
> Long story short. Please try to be correct on your claims since you are 
> sounding like you don't know windows and .net that much. no harm intended. 
>
> Kind regards
>
> On Wednesday, May 18, 2016 at 5:09:13 AM UTC+3, Tim Hawkins wrote:
>>
>> He mentions that they have a bunch of Web scrappers,  this kind of task 
>> is heavily concurrent, something that .net is not know for, but golang is. 
>> We are a php house, but we are switching to go for this one reason, our new 
>> internal stack wil be based on php frontend,  golang based microservices 
>> layers, and mysql, elasticsearch and mongo based data stores. 
>>
>> We also run Windows and Linux servers,  we are continually having 
>> problems with our windows systems stalling becuase the predominate pattern 
>> for services there is to build a "windows service",  which suffers from 
>> issues with leakage of resources, deadlocks etc. 
>>
>> The predominate pattern on linux for services that don't have a listener, 
>> is to use cron driven tasks that execute a fixed amount of work and then 
>> die, freeing up all resources except persistent ones like disk space.  This 
>> makes them very much more reliable. Golang has good support for building 
>> listeners too. 
>> On 18 May 2016 08:47, <parais...@gmail.com> wrote:
>>
>>> There is no debate here, .net comes with 15 years of libraries with 
>>> battery included . If you're goal is to develop a complex web application 
>>> with complex business logic, form logic,validation logic, view logic, ORMs 
>>> and what not, .net core will be a better fit. Go is good for plumbing and 
>>> writing server infrastructure components that doesn't need ORMs, complex 
>>> validation schemes and what not. Just have a look at MVC6 then look at Go 
>>> ecosystem when it comes to http frameworks. There is no equivalent. MVC6 is 
>>> a sweet spot between JSF and Rails , it embraces dependency injection , 
>>> Async I/O with Kestrel and you wont need any library but the core framework 
>>> for most of your work. Hundreds of people get paid to work on asp.net 
>>> so it is no surprise it is a complete framework with good integration with 
>>> Windows software if you are in the enterprise space.
>>>
>>> Fortunately, Go isn't a tool that requires a lot of investment when it 
>>> comes to learning or deployment so it can remain in your toolbelt when 
>>> needed, instead of using a scripting language for instance. 
>>>
>>> Le lundi 16 mai 2016 15:37:20 UTC+2, Luca Looz a écrit :
>>>>
>>>> I'm a big fan of Go and i have used it for some side projects. I like 
>>>> its performance, built-in concurrency, easy cross platform builds and the 
>>>> concept of being practical and productive.
>>>> My company it's currently .net based, we develop all backends 
>>>> (scrapers, rest api, web sites etc) in vb.net and c#.
>>>> We want to switch to something crossplatform and stick with it for all 
>>>> new projects. 
>>>> My boss discovered Go and he likes it too but i know for certain that 
>>>> .NET core (currently in RC) it's an obvious choice because we don't need 
>>>> to 
>>>> learn a completely different language and development environment.
>>>> I would like to use Go but i don't know which arguments can i use to 
>>>> persuade by boss, any hint? 
>>>>
>>> -- 
>>> You received this message because you are subscribed to the Google 
>>> Groups "golang-nuts" group.
>>> To unsubscribe from this group and stop receiving emails from it, send 
>>> an email to golang-nuts...@googlegroups.com.
>>> For more options, visit https://groups.google.com/d/optout.
>>>
>>

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to