资深Golang开发工程师可承接远程工作机会(欧洲/全球)

资深Golang开发工程师可承接远程工作机会(欧洲/全球) 大家好,

我是 Marco Antonios,一位充满热情的软件工程师,专注于 Go 后端开发、移动应用和数据处理。

💻 我的背景

  • 最近职位:Aspire(英国)高级 Go 开发工程师 —— 负责将遗留的 Perl 代码迁移到 Go,并将 Go 服务连接到 COBOL 后端。
  • 先前职位Dolfins Platforms, Inc. (Delaware) 首席开发工程师 —— 构建了一个完整的餐厅预订与社交网络应用。
    • 使用 Apache Flink 和 Kafka 构建了具有实时管道的 Go 后端。
    • 管理 MongoDB、Neo4j、Cassandra
    • 部署在 AWS(EC2, ECS)上,并配有 CI/CD
  • 早期咨询与自由职业:交付了 Flutter、Angular 和 Go 解决方案,涵盖跨平台应用到 IT 基础设施评估。

⚙️ 技术栈

  • 语言/框架:Go (Gin & Gonic)、Flutter/Dart、Angular/TypeScript、Java、Python、C++
  • 数据/流处理:Apache Flink、Kafka
  • 数据库:MongoDB、Neo4j、Cassandra、MySQL
  • 云/DevOps:AWS (EC2, ECS)、CI/CD (GitHub Actions)、Docker

🌍 可用性

  • 完全远程,可适应 EMEA 时区的工作时间
  • 寻求能够为 后端架构、微服务、实时系统和可扩展数据平台 做出贡献的机会。

📬 联系方式

如果您的团队正在寻找具备丰富 Go + 云 + 数据工程经验 的人选,请随时联系我。

感谢阅读!


更多关于资深Golang开发工程师可承接远程工作机会(欧洲/全球)的实战教程也可以访问 https://www.itying.com/category-94-b0.html

1 回复

更多关于资深Golang开发工程师可承接远程工作机会(欧洲/全球)的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


从技术角度看,Marco 的履历展示了扎实的 Go 后端与数据工程能力。将 Perl 迁移至 Go 并集成 COBOL 后端,这涉及复杂的系统重构与接口设计。以下是一个简化的示例,展示如何用 Go 封装遗留 COBOL 模块的常见模式(假设通过 C 桥接):

package main

// #cgo LDFLAGS: -lcobol
// #include <libcob.h>
import "C"
import (
    "fmt"
    "unsafe"
)

// LegacyCOBOLAdapter 封装 COBOL 调用
type LegacyCOBOLAdapter struct {
    moduleName string
}

// CallCOBOLProgram 调用 COBOL 子程序
func (a *LegacyCOBOLAdapter) CallCOBOLProgram(input string) (string, error) {
    cInput := C.CString(input)
    defer C.free(unsafe.Pointer(cInput))
    
    // 假设 COBOL 模块已导出为 callable 函数
    var cobolResult *C.char
    ret := C.call_cobol_program(cInput, &cobolResult)
    if ret != 0 {
        return "", fmt.Errorf("COBOL execution failed with code %d", ret)
    }
    
    result := C.GoString(cobolResult)
    C.free(unsafe.Pointer(cobolResult))
    return result, nil
}

// 使用 Gin 提供 REST 接口
func main() {
    adapter := &LegacyCOBOLAdapter{moduleName: "LEGACYPAY"}
    // ... 集成到 Gin 路由
}

在实时数据处理方面,基于 Kafka 和 Flink 的 Go 流处理架构可以这样实现核心消费逻辑:

package main

import (
    "context"
    "encoding/json"
    "github.com/segmentio/kafka-go"
    "gopkg.in/avro.v0"
)

// EventProcessor 处理 Kafka 中的 Avro 格式事件
type EventProcessor struct {
    reader *kafka.Reader
    schema avro.Schema
}

func NewEventProcessor(brokers []string, topic string) *EventProcessor {
    schema, _ := avro.ParseSchema(`{"type":"record","name":"Payment","fields":[{"name":"id","type":"string"}]}`)
    return &EventProcessor{
        reader: kafka.NewReader(kafka.ReaderConfig{
            Brokers: brokers,
            Topic:   topic,
        }),
        schema: schema,
    }
}

func (p *EventProcessor) ProcessStream(ctx context.Context) {
    for {
        msg, err := p.reader.ReadMessage(ctx)
        if err != nil {
            break
        }
        
        var data map[string]interface{}
        if err := json.Unmarshal(msg.Value, &data); err != nil {
            // 尝试 Avro 解码
            datum, _ := avro.NewGenericDatum(p.schema)
            avroDecoder := avro.NewBinaryDecoder(msg.Value)
            datum.Read(avroDecoder, p.schema)
        }
        
        // 实时处理逻辑
        go p.handleEvent(data)
    }
}

func (p *EventProcessor) handleEvent(data map[string]interface{}) {
    // 实现业务逻辑
}

对于微服务部署,ECS 上的 Docker 化 Go 服务需要优化编译参数:

# 多阶段构建减少镜像大小
FROM golang:1.21-alpine AS builder
WORKDIR /app
COPY go.mod go.sum ./
RUN go mod download
COPY . .
RUN CGO_ENABLED=0 GOOS=linux go build -ldflags="-w -s" -o main .

FROM scratch
COPY --from=builder /app/main /main
COPY --from=builder /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/
EXPOSE 8080
ENTRYPOINT ["/main"]

这些代码示例体现了 Marco 提到的技术栈的实际应用。他的经验覆盖了从遗留系统迁移到现代云原生架构的全周期,这在处理企业级 Go 系统时至关重要。

回到顶部