Fugue招聘远程Golang后端工程师 - 年薪$100k-$170k
Fugue招聘远程Golang后端工程师 - 年薪$100k-$170k
太长不看版
请通过 LinkedIn 上的职位描述进行申请。谢谢!
关于 Fugue
Fugue 帮助工程师构建和运营安全的云基础设施。我们的总部位于马里兰州弗雷德里克,并且一直对远程工作持友好态度。今年,我们更进一步,现在以远程工作为首选模式,但我们也旨在为那些需要的人提供办公空间。
我们的产品团队
在 Fugue,工程部门是我们产品团队的一部分。我们是一个友好、精干且敏捷的资深工程师团队,在构建和扩展 Fugue SaaS 产品的过程中乐在其中。我们关心云安全,并致力于帮助客户发现和修复安全漏洞。与极其体贴、协作且充满好奇心的队友一起工作,让我们感到非常满足。
职位描述
作为 Fugue 产品团队的后端软件工程师,您将协助设计、实现和自动化部署我们 SaaS 应用程序中的新功能。您将与产品团队合作,创建与 AWS、Azure 和 Google Cloud API 交互的健壮且高度可扩展的系统。您将使用 Terraform 和 CloudFormation 等基础设施即代码技术,并为用 Go 语言编写的各种开源项目做出贡献,例如我们用于 IaC 安全的 Regula 项目。我们使用包括 AWS 中的 Lambda 和 Fargate 在内的无服务器技术。这个职位主要涉及 Go 语言开发,但偶尔也会用到 Python 和 Javascript。
简而言之,如果您是一名希望了解更多关于 AWS、Azure 和 Google 云知识,并希望加入一个精干而强大的团队的 Go 开发者,那么这个职位可能非常适合您。
要求
- 熟悉 Go 语言
- 了解 Web 技术并精通 Linux
- 有解决问题和协助交付软件产品的记录
- 对云工程和云安全感兴趣
- 精通自动化测试和 CI/CD
具备 AWS、Azure 或 Google 云其中之一的经验是理想的,但不是硬性要求。如果您有 CloudFormation、Terraform 或其他基础设施即代码技术的经验,那将是一个加分项。我们还使用以下工具和技术,因此具备这些背景知识也是加分项:Open Policy Agent、Swagger API、MySQL、Redshift、Docker 以及 AWS 中的无服务器计算。
更多关于Fugue招聘远程Golang后端工程师 - 年薪$100k-$170k的实战教程也可以访问 https://www.itying.com/category-94-b0.html
更多关于Fugue招聘远程Golang后端工程师 - 年薪$100k-$170k的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
这是一个非常吸引人的Go后端工程师职位机会。Fugue的产品方向(云安全、IaC)与当前技术趋势高度契合,其技术栈对Go开发者来说也很有成长空间。
从职位描述看,这个岗位的核心是使用Go构建与各大云平台API交互的SaaS后端系统。以下是一些关键点分析和技术示例:
核心技术栈解析
- Go语言开发:岗位明确要求熟悉Go,这是主要工作语言。Fugue的开源项目Regula就是Go编写的,这表明他们需要能编写高质量Go代码的工程师。
// 示例:一个简单的云资源扫描函数,类似Regula可能的功能
package scanner
import (
"context"
"fmt"
"github.com/aws/aws-sdk-go-v2/service/ec2"
)
type CloudScanner struct {
awsEC2Client *ec2.Client
// 可扩展支持Azure、GCP客户端
}
// 扫描EC2实例的安全配置
func (s *CloudScanner) ScanEC2Instances(ctx context.Context) ([]SecurityFinding, error) {
resp, err := s.awsEC2Client.DescribeInstances(ctx, &ec2.DescribeInstancesInput{})
if err != nil {
return nil, fmt.Errorf("failed to describe instances: %w", err)
}
var findings []SecurityFinding
for _, reservation := range resp.Reservations {
for _, instance := range reservation.Instances {
// 检查安全组等配置
if s.hasInsecureConfiguration(instance) {
findings = append(findings, SecurityFinding{
ResourceID: *instance.InstanceId,
ResourceType: "AWS::EC2::Instance",
Severity: "HIGH",
Description: "Instance has overly permissive security groups",
})
}
}
}
return findings, nil
}
- 云平台集成:需要与AWS、Azure、GCP的API交互。虽然不强制要求现有经验,但快速学习这些云服务的能力很重要。
// 示例:使用Go SDK进行多云操作
package cloud
import (
"context"
"github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute"
"github.com/aws/aws-sdk-go-v2/service/ec2"
"google.golang.org/api/compute/v1"
)
type MultiCloudManager struct {
awsClient *ec2.Client
azureClient *armcompute.VirtualMachinesClient
gcpClient *compute.Service
}
// 统一接口检查虚拟机状态
func (m *MultiCloudManager) CheckVMStatus(ctx context.Context, provider, vmID string) (string, error) {
switch provider {
case "aws":
resp, err := m.awsClient.DescribeInstances(ctx, &ec2.DescribeInstancesInput{
InstanceIds: []string{vmID},
})
// 处理AWS响应
return *resp.Reservations[0].Instances[0].State.Name, nil
case "azure":
resp, err := m.azureClient.Get(ctx, "resource-group", vmID, nil)
// 处理Azure响应
return *resp.Properties.ProvisioningState, nil
case "gcp":
resp, err := m.gcpClient.Instances.Get("project", "zone", vmID).Do()
// 处理GCP响应
return resp.Status, nil
}
return "", fmt.Errorf("unsupported cloud provider: %s", provider)
}
- 基础设施即代码(IaC)集成:需要理解Terraform、CloudFormation等技术。Regula项目就是分析IaC配置安全的工具。
// 示例:解析Terraform配置进行安全检查
package tfscanner
import (
"encoding/json"
"io/ioutil"
)
type TerraformPlan struct {
ResourceChanges []ResourceChange `json:"resource_changes"`
}
func ScanTerraformPlan(planPath string) ([]Violation, error) {
data, err := ioutil.ReadFile(planPath)
if err != nil {
return nil, err
}
var plan TerraformPlan
if err := json.Unmarshal(data, &plan); err != nil {
return nil, err
}
var violations []Violation
for _, change := range plan.ResourceChanges {
// 检查资源变更是否符合安全策略
if change.Type == "aws_s3_bucket" {
if !hasEncryptionEnabled(change.Change.After) {
violations = append(violations, Violation{
Resource: change.Address,
Rule: "S3_ENCRYPTION_REQUIRED",
Description: "S3 bucket must have encryption enabled",
})
}
}
}
return violations, nil
}
- 无服务器架构:使用AWS Lambda和Fargate,这意味着需要编写适合无服务器环境的Go代码。
// 示例:AWS Lambda处理函数
package main
import (
"context"
"encoding/json"
"github.com/aws/aws-lambda-go/events"
"github.com/aws/aws-lambda-go/lambda"
)
type ScanRequest struct {
AccountID string `json:"account_id"`
ResourceID string `json:"resource_id"`
}
func handler(ctx context.Context, event events.APIGatewayProxyRequest) (events.APIGatewayProxyResponse, error) {
var req ScanRequest
if err := json.Unmarshal([]byte(event.Body), &req); err != nil {
return events.APIGatewayProxyResponse{
StatusCode: 400,
Body: `{"error": "Invalid request"}`,
}, nil
}
// 执行云资源扫描
findings, err := scanResource(ctx, req.AccountID, req.ResourceID)
if err != nil {
return events.APIGatewayProxyResponse{
StatusCode: 500,
Body: `{"error": "Scan failed"}`,
}, nil
}
response, _ := json.Marshal(findings)
return events.APIGatewayProxyResponse{
StatusCode: 200,
Body: string(response),
}, nil
}
func main() {
lambda.Start(handler)
}
技术匹配建议
对于申请者来说,除了满足基本要求外,可以重点准备:
- Go并发模式:云API调用通常是I/O密集型,需要熟练使用goroutine和channel
- 测试技能:岗位强调自动化测试,需要展示编写单元测试、集成测试的能力
- CI/CD经验:了解如何将Go应用集成到部署流水线中
- 容器化经验:虽然Docker是加分项,但在云原生环境中几乎是必需品
这个职位的技术栈非常现代化,涉及云原生、无服务器、IaC等前沿领域,对于Go开发者来说是很好的职业发展机会。薪资范围在$100k-$170k也很有竞争力,特别是考虑到远程工作的灵活性。

