# Project structure for large Go project (golang)

**URL:** <https://forum.serverless.com/t/project-structure-for-large-go-project-golang/4219>\
**Category:** Serverless Framework\
**Created:** [April 10, 2018, 11:30pm UTC](https://forum.serverless.com/t/project-structure-for-large-go-project-golang/4219 "2018-04-10T23:30:36Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![jimjimovich](https://yyz2.discourse-cdn.com/flex036/user_avatar/forum.serverless.com/jimjimovich/32/511_2.png) [@jimjimovich](https://forum.serverless.com/u/jimjimovich)\
**Post date:** [April 10, 2018, 11:30pm UTC](https://forum.serverless.com/t/project-structure-for-large-go-project-golang/4219/1 "2018-04-10T23:30:36Z")

</div>

I’m wanting to write a fairly large project in Go using the Serverless Framework and I have some questions about how to organize my project. I’m planning to break up the project into several smaller services that will be responsible for different parts of the site and can be mounted at /something on a single API Gateway domain.

When I generated a new project using the golang template, I noticed that each function gets compiled into a stand-alone binary but that all the binaries are uploaded in the zip file. So, in the standard template, you have a “hello” function and a “world” function and the zip file upload is already over 5MB. It seems like this is not optimal and you could rather quickly hit the 50MB limit on zip uploads.

How would you recommend organizing a golang project that will eventually have 100s of endpoints/functions, but need to share resources?

---

<div class="post-metadata">

**Author:** ![jimjimovich](https://yyz2.discourse-cdn.com/flex036/user_avatar/forum.serverless.com/jimjimovich/32/511_2.png) [@jimjimovich](https://forum.serverless.com/u/jimjimovich)\
**Post date:** [April 12, 2018, 1:52am UTC](https://forum.serverless.com/t/project-structure-for-large-go-project-golang/4219/2 "2018-04-12T01:52:10Z")

</div>

Well, I guess I should start with individually packaging each function. That’ll make more sense with large binaries.

> **[Serverless Framework - Packaging](https://www.serverless.com/framework/docs/providers/aws/guide/packaging/)**
>
> The Serverless Framework documentation for AWS Lambda, API Gateway, EventBridge, DynamoDB and much more.
