Senior Backend Developer .NET
Job Description
我们的酒店管理解决方案由多个面向领域的微服务(domain-oriented microservices)组成,并由数个跨职能团队共同开发。您将参与开发面向酒店行业的分布式系统的一部分。该系统由多个面向领域的微服务组成,由若干跨职能团队共同开发。通过您的工作,您将为全球数以千计酒店员工的工作体验带来改善。
随着业务的发展,需招募高级Backend开发工程师若干名,详情如下:
主要职责范围
1. 系统功能的开发、实施与维护
- 运用领域驱动设计(Domain-Driven Design)的原则,在现有的微服务(microservice)生态系统中设计可扩展的解决方案。
- 实现复杂的酒店管理业务逻辑,包括预订、费用结算和报表功能。
- 在系统架构不断进化的过程中,确保其兼容性。
- 设计容错组件,以应对高吞吐量的数据处理任务。
- 与产品团队协作,将业务需求进行技术转化。
2. 为第三方构建专用的数据导出解决方案
- 为与酒店管理系统对接的第三方系统设计并实现稳健的 API 集成。
- 为酒店管理系统(PMS)、渠道管理系统(Channel Management)及收益管理工具创建数据导出机制。
- 为B2B集成实施安全的身份验证和授权机制。
- 开发支持多种格式(XML, JSON, CSV)的基于文件的导出解决方案。
- 确保外部数据交换的一致性和可靠性。
- 管理API版本控制,并维护现有集成兼容性。
3. 为分析和报表目的构建可扩展的数据聚合策略
- 设计高效的数据聚合管道,用于酒店经营分析和商业智能(BI)。
- 对于酒店大数据场景设计实时和批处理解决方案。
- 创建针对入住率、收入和运营指标报表的优化数据模型。
- 开发处理复杂酒店数据转换的ETL(抽取、转换、加载)流程。
- 确保来自多个数据源的数据质量和一致性。
- 与数据分析师协作,理解报表需求并优化查询性能。
4. 每日进行代码审查并参与评审流程
- 专注于代码质量、安全性和性能进行彻底的代码审查。
- 确保代码符合编码标准、SOLID原则及既定的架构模式。
- 就实现方法提供富有建设性的反馈并提出改进建议。
- 审查数据库查询,寻找优化机会并发现潜在的性能问题。
- 验证错误处理、日志记录和监控功能的正确实施。
- 提交带有清晰描述和上下文的、文档齐全的拉取/合并请求(Pull/Merge Requests)。
- 及时响应审查反馈并落实改进建议。
- 参与关于实现方法和设计决策的技术讨论。
- 遵循既定的分支策略和合并流程。
- 确保所有代码变更都包含适当的单元测试和集成测试。
- 保持较高的代码覆盖率和质量。
5. 使用高级工具优化API和报表中SQL查询的性能
- 分析并优化处理大型酒店数据集的复杂PostgreSQL查询。
- 为时序酒店数据设计高效的数据库索引和分区策略。
- 实施查询优化技术,包括适当的连接(Join)策略和子查询优化。
- 使用数据库性能分析工具识别并解决性能瓶颈。
- 监控查询执行计划,并在适当情况下实施缓存策略。
- 优化Entity Framework查询并实施高效的数据访问模式。
6. 在敏捷开发的框架下进行协作式、迭代式的软件开发
- 积极参与例会、迭代规划和评审会议等。
- 与质量保证(QA)、产品构架以及产品团队等跨职能团队进行有效协作。
- 通过提供准确的工作量预估和技术洞察,参与迭代规划。
- 在保持代码质量和交付时间线的前提下,适应不断变化的需求。
- 通过自动化测试和监控实践持续集成与持续部署(CI/CD)。
- 参与生产环境问题的事件响应和事后分析(Post-mortem analysis)。
技术需求
- C# 9, .NET Core:使用最新的C#特性和现代.NET生态系统。
- PostgreSQL:高级SQL特性、JSON支持、分区及性能调优。
- 微服务:面向服务的架构、服务间通信及分布式系统模式。
- Swagger:API文档生成、测试及客户端代码生成。
- Docker:容器化、编排及部署策略。
- Redis:缓存、会话管理及分布式数据结构。
- Kafka:事件流处理、消息队列及服务间的异步通信。
- Elastic Search(加分项):全文搜索、日志聚合及分析。
- Visual Studio 2022 / Resharper / Rider:配备高级调试和重构工具的专业开发环境。
Your job will be to develop a part of a distributed system that serves the hospitality industry. The system consists of many domain-oriented microservices developed under a few cross-functional teams. You can bring a smile to the faces of thousands of people working in hotels across the globe.
Key Areas of Responsibilities
Designing, implementing, and maintaining new functionalities within a living system
- Design scalable solutions within existing microservices ecosystem using Domain-Driven Design principles
- Implement complex business logic for hotel management operations including reservations, billing, and reporting
- Ensure backward compatibility while evolving system architecture
- Design fault-tolerant components that handle high-volume hospitality data processing
- Collaborate with product teams to translate business requirements into technical specifications
Building dedicated export solutions for 3rd parties
- Design and implement robust APIs integration for external hotel management systems
- Create data export mechanisms for property management systems, channel managers, and revenue management tools
- Implement secure authentication and authorization for B2B integrations
- Develop file-based export solutions supporting various formats (XML, JSON, CSV)
- Ensure data consistency and reliability in external data exchanges
- Manage API versioning and maintain backward compatibility for existing integrations
Building scalable aggregated data strategy for analytical and reporting purposes
- Design efficient data aggregation pipelines for hotel performance analytics and business intelligence
- Implement real-time and batch processing solutions for large-scale hospitality data
- Create optimized data models for reporting on occupancy, revenue, and operational metrics
- Develop ETL processes that handle complex hotel data transformations
- Ensure data quality and consistency across multiple data sources
- Collaborate with data analysts to understand reporting requirements and optimize query performance
Performing code reviews daily and participating in code review process
- Conduct thorough code reviews focusing on code quality, security, and performance
- Ensure adherence to coding standards, SOLID principles, and established architectural patterns
- Provide constructive feedback on implementation approaches and suggest improvements
- Review database queries for optimization opportunities and potential performance issues
- Validate proper error handling, logging, and monitoring implementation
- Submit well-documented pull/merge requests with clear descriptions and context
- Respond promptly to review feedback and implement suggested improvements
- Engage in technical discussions about implementation approaches and design decisions
- Follow established branching strategies and merge procedures
- Ensure all code changes include appropriate unit and integration tests
- Maintain high code coverage and quality metrics
Using advanced tools to optimize performance of SQL queries used in APIs and reports
- Analyze and optimize complex PostgreSQL queries handling large hospitality datasets
- Design efficient database indexes and partitioning strategies for time-series hotel data
- Implement query optimization techniques including proper join strategies and subquery optimization
- Use database profiling tools to identify and resolve performance bottlenecks
- Monitor query execution plans and implement caching strategies where appropriate
- Optimize Entity Framework queries and implement efficient data access patterns
Working in a collaborative and iterative software development process with an Agile team
- Actively participate in Scrum ceremonies including daily standups, sprint planning, and retrospectives
- Collaborate effectively with cross-functional teams including QA, Infrastructure, and Product Team people
- Contribute to sprint planning by providing accurate effort estimates and technical insights
- Adapt to changing requirements while maintaining code quality and delivery timelines
- Practice continuous integration and deployment with automated testing and monitoring
- Participate in incident response and post-mortem analysis for production issues
Technologies used:
- C# 9, .NET Core - Latest C# features and modern .NET ecosystem
- PostgreSQL - Advanced SQL features, JSON support, partitioning, and performance tuning
- Microservices - Service-oriented architecture, inter-service communication, and distributed system patterns
- Swagger - API documentation, testing, and client code generation
- Docker - Containerization, orchestration, and deployment strategies
- Redis - Caching, session management, and distributed data structures
- Kafka - Event streaming, message queuing, and asynchronous communication between services
- Elastic Search (nice to have) - Full-text search, log aggregation, and analytics
- Visual Studio 2022 / Resharper / Rider - Professional development environment with advanced debugging and refactoring tools
任职要求
- 英语能力:要求具备流利的英语口语和书面沟通能力,能够向技术和非技术利益相关者传达复杂的技术概念;具备撰写清晰的技术文档和API规范的经验;能有效地在国际化的分布式团队中协作。
- 编程范式:精通面向对象(OOP)和函数式编程(FP)范式,对OOP原则有深刻理解,具备C#函数式编程概念的经验,并掌握设计模式。
- .NET技术:具备.NET 8/9和Entity Framework的扎实经验,精通最新.NET特性;高级Entity Framework Core知识(包括迁移、查询优化和性能调优);具备依赖注入、中间件和ASP.NET Core管道的经验。
- PostgreSQL:具备丰富的PostgreSQL实战经验,拥有高级SQL技能(包括复杂连接、窗口函数和CTE);掌握数据库设计和规范化原则;具备PostgreSQL特定功能(如JSON/JSONB、数组和自定义数据类型)的经验;拥有数据库性能调优和查询优化的知识。
- 数据库性能:具备编写代码及配套测试的能力,熟悉测试驱动开发(TDD)和行为驱动开发(BDD)实践;掌握单元测试、集成测试和端到端测试策略;了解代码覆盖率分析和质量指标;遵循整洁代码原则和SOLID设计模式。
- 软性素质:思维开放、积极主动,乐于学习新技术并适应变化的需求;能主动发现问题并在其影响团队前解决;乐于协作解决问题并分享知识;具备自我激励的职业发展态度,定期参与技术社区并紧跟行业趋势;能主动提出并实施流程改进方案。
- 工作经验:至少3年同类职位经验,且在IT行业拥有至少5年经验;在高级后端开发岗位上有可证实的业绩;具备领导技术项目并指导其他开发人员的经验;具备处理复杂分布式系统的能力。
加分技能(Nice To Have)
- Linux与Docker基础:熟练使用Linux命令行及系统管理基础;具备Docker容器化、Docker Compose及容器编排的经验。
- 领域驱动设计(DDD):了解DDD概念,包括限界上下文(Bounded Contexts)、聚合(Aggregates)和领域事件(Domain Events)。
- CQRS与事件溯源模式:具备命令查询职责分离(CQRS)和事件溯源(Event Sourcing)架构及事件存储管理的经验。
- 分布式系统与Web服务:具备微服务通信模式(同步和异步)的经验;了解分布式事务管理和最终一致性。
- AWS技术:具备AWS RDS PostgreSQL及其他AWS数据库相关技术的经验者优先,包括AWS RDS配置、监控与优化;AWS数据库迁移服务及备份策略;AWS CloudWatch监控及性能洞察。
- 酒店系统经验:具备酒店系统经验并对酒店应用熟悉者将被视为极大的优势,包括了解酒店运营(预订、入住/退房、计费流程);熟悉酒店行业标准及集成(PMS, CRS, GDS);了解酒店收益管理和报表要求;熟悉酒店特定的数据模型和业务规则。
Strong verbal and written communication skills in English are required
- Ability to communicate complex technical concepts to both technical and non-technical stakeholders
- Experience with writing clear technical documentation and API specifications
- Effective collaboration in international, distributed teams
Fluent in Object-Oriented and Functional Programming paradigms
- Deep understanding of OOP principles
- Experience with functional programming concepts in C#
- Knowledge of design patterns
Knowledge of .NET 8/9 and Entity Framework
- Proficiency in latest .NET features
- Advanced Entity Framework Core knowledge including migrations, query optimization, and performance tuning
- Experience with dependency injection, middleware, and ASP.NET Core pipeline
Strong experience with PostgreSQL
- Advanced SQL skills including complex joins, window functions, and CTEs
- Database design and normalization principles
- Experience with PostgreSQL-specific features like JSON/JSONB, arrays, and custom data types
- Knowledge of database performance tuning and query optimization
Good understanding of and hands-on experience with database performance aspects
- Index design and optimization strategies
- Query execution plan analysis and optimization
- Database monitoring and performance metrics analysis
- Experience with connection pooling and transaction management
Capability of writing clean code along with tests
- Test-driven development (TDD) and behavior-driven development (BDD) practices
- Unit testing, integration testing, and end-to-end testing strategies
- Code coverage analysis and quality metrics
- Clean code principles and SOLID design patterns
Open-minded, proactive person
- Willingness to learn new technologies and adapt to changing requirements
- Initiative in identifying and solving problems before they impact the team
- Collaborative approach to problem-solving and knowledge sharing
Proactive attitude and continuous improvement
- Self-motivated approach to professional development
- Regular participation in technical communities and staying updated with industry trends
- Initiative in proposing and implementing process improvements
Minimum 3 years of experience with similar position and minimum 5 years of experience with IT industry
- Proven track record in senior backend development roles
- Experience with leading technical initiatives and mentoring other developers
- Demonstrated ability to work with complex distributed systems
Nice To Have Skills
Basics of Linux and Docker
- Linux command line proficiency and system administration basics
- Docker containerization, Docker Compose, and container orchestration
Domain-Driven Design
- DDD concepts including bounded contexts, aggregates, and domain events
Experience with CQRS and Event Sourcing patterns
- Command Query Responsibility Segregation (CQRS) implementation
- Event Sourcing architecture and event store management
- Experience with event-driven architecture patterns
Experience with distributed systems and web services
- Microservices communication patterns (synchronous and asynchronous)
- Distributed transaction management and eventual consistency
Experience with AWS RDS PostgreSQL and other AWS database-related technologies is a plus
- AWS RDS configuration, monitoring, and optimization
- AWS database migration services and backup strategies
- AWS CloudWatch monitoring and Performance Insights
Experience with hospitality systems and familiarity with hospitality applications is a strong plus
- Understanding of hotel operations, including reservations, check-in/check-out, and billing processes
- Knowledge of hospitality industry standards and integrations (PMS, CRS, GDS)
- Experience with hotel revenue management and reporting requirements
- Familiarity with hospitality-specific data models and business rules