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

3 回复

你好 @CurtisMyzie

我对这个职位很感兴趣。 我已经给你发送了一封邮件,请查收。

此致 Maria +13478093381

更多关于Fugue招聘远程Golang后端工程师 - 年薪$100k-$170k的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


你好,

我很乐意为你提供帮助。

如需进一步详细讨论,请通过邮件 garry@cisinlabs.com 或 Skype: cis.garry 与我联系。

期待你的回复。

谢谢

Garry

这是一个非常吸引人的Go后端工程师职位机会。Fugue的产品方向(云安全、IaC)与当前技术趋势高度契合,其技术栈对Go开发者来说也很有成长空间。

从职位描述看,这个岗位的核心是使用Go构建与各大云平台API交互的SaaS后端系统。以下是一些关键点分析和技术示例:

核心技术栈解析

  1. 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
}
  1. 云平台集成:需要与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)
}
  1. 基础设施即代码(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
}
  1. 无服务器架构:使用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)
}

技术匹配建议

对于申请者来说,除了满足基本要求外,可以重点准备:

  1. Go并发模式:云API调用通常是I/O密集型,需要熟练使用goroutine和channel
  2. 测试技能:岗位强调自动化测试,需要展示编写单元测试、集成测试的能力
  3. CI/CD经验:了解如何将Go应用集成到部署流水线中
  4. 容器化经验:虽然Docker是加分项,但在云原生环境中几乎是必需品

这个职位的技术栈非常现代化,涉及云原生、无服务器、IaC等前沿领域,对于Go开发者来说是很好的职业发展机会。薪资范围在$100k-$170k也很有竞争力,特别是考虑到远程工作的灵活性。

回到顶部