Разработчик backend (Java/Scala, Blockchain, Москва)

Bell Integrator

Bell Integrator - 后端开发人员,中层。 格式:办公室工作;城市 — 莫斯科。 职位的薪资未注明——面试时讨论。 贝尔集成商是该国领先的系统集成商之一。 我们是一家获得认证的IT公司,隶属于大型集团Softline大家庭。 Bell Integrator 在俄罗斯积极实施项目,我们的客户包括国内最大的系统性金融、电信和零售公司。 关于项目: 一家大型银行正在开发具有自己的 Amity Chain 区块链的数字金融资产 (DFA) 平台。 俄罗斯的 DFA 市场正在以爆炸性的速度增长——发行量已达到 1.35 万亿卢布。 我们正在为平台门户网站寻找强大的后端开发人员 - 与银行的远程银行渠道和 API 集成,以便通过数字银行服务进行客户操作。 Tech stack Language 爪哇 17+ Frameworks Spring Boot、Spring 数据、Spring 安全 Blockchain Amity Chain(专有,基于 Hyperledger Fabric) Integrations 银行 RBS 渠道、银行内部系统 关于产品: DFA 平台的门户网站 - 自有门户+与一般银行 RBS 渠道的集成 Blockchain Amity Chain - 银行自己的区块链(最初基于Hyperledger Fabric,从头开始重写) Audience 个人和法人实体。 目前约有 10K 活跃客户,2026 年计划:50-100K 我们期待: - 包含示例代码的 GitHub/GitLab - 或其他格式的项目链接 - 至少 2 年 Java 8+ 经验 - Spring 框架、Spring Boot、Spring Data 经验 - 消息代理经验 - Apache Kafka 等。 - 编写单元和集成测试的能力 - 了解编写可维护和可扩展代码的原则 - SOLID、DRY、KISS、YAGNI - RESTful API 设计经验 - 了解微服务架构模式 这将是一个优点: 使用 Scala 的经验或愿望 对区块链技术有经验或了解 金融科技或银行业经验 将要从事的工作: 我们不是在寻找 Jira 的任务执行者。 我们正在寻找一个能够掌控自己的领域并推动其向前发展的人。 - 开发新的端到端功能 - 从与分析师一起详细说明需求到生产中的部署。 您拥有整个功能,而不仅仅是根据规范编写代码 - 架构设计和开发 - 参与架构决策、选择方法、主动改进现有系统 - 与银行系统集成 - 远程银行渠道、内部银行系统、Amity Chain 区块链。 复杂的集成需要自主决策 - 代码审查和指导——在团队中保持高水平的代码质量,帮助同事成长 - 支持和开发现有代码 - 不仅仅是修复错误,而是改进系统、消除技术债务、提高可靠性 - 在不确定的条件下工作 - 数字媒体市场还很年轻,需求不断变化,需要快速适应和提供解决方案的能力 Conditions: - 在公司内的职业和职业发展机会,参与不同项目的机会; - 在专业人士的分布式团队中工作经验; - 薪资水平单独讨论; - 学习外语、健身会员、教育课程的企业折扣; - 工作形式 - 莫斯科的混合形式 资料来源:Habr Career,发表于 2026 年 8 月 6 日。 回复在原始页面上。

Бэкенд разработчик · Middle · Java · Apache Kafka · Blockchain · Москва

Apply

More roles at Bell Integrator

Workix

{{ siteBrand.name }}
{{ prevSlogan }} {{ currentSlogan }}
{{ t('loading') }}

{{ t('onboarding_title') }}

{{ t('onboarding_sub') }}

{{ t('agent_connect_title') }}

{{ t('agent_connect_hint') }}

{{ agentPrompt }}

{{ t('partners_title') }}

{{ t('partners_sub') }}

{{ t('partners_embed_title') }}

{{ t('partners_embed_body') }}

{{ t('cases_title') }}

{{ t('cases_sub') }}

{{ c.title }}

{{ c.summary }}

{{ t('cases_outcome') }}: {{ c.outcome }}

{{ tag }}
{{ t('loading') }}
{{ t('loading') }}
← {{ t('back') }}
{{ t('empty_orders') }}
{{ t('order_title') }} · {{ kindLabel(currentOrder.kind || currentOrder.type) }}

{{ currentOrder.title }}

{{ statusLabel(currentOrder.status) }} {{ appliedLabel(currentOrder.applied.count) }} · {{ t('applied_by_you') }} {{ currentOrder.project }}
{{ tag.name || tag }}

{{ t('applied_title') }}

{{ t('applied_hint') }}

{{ t('applied_login') }}

{{ t('nav_auth') }}
{{ t('applied_at') }}: {{ fromNow(myApplication.appliedAt) }} · {{ myApplication.via }}

{{ t('proposals_title') }}

{{ t('proposal_place') }}
{{ fromNow(p.date) }}
{{ t('contact') }} {{ t('proposal_score') }}: {{ p.score }}

{{ t('proposal_yours') }}

{{ t('proposal_login') }}

{{ t('nav_auth') }}
{{ t('proposal_score') }}: {{ formProposal.score }}
← {{ t('back') }}
{{ t('performer_title') }}

{{ currentPerformer.name }}

{{ currentPerformer.headline }}

{{ availabilityLabel(currentPerformer.availability) }} {{ currentPerformer.location }} {{ (currentPerformer.openTo||[]).join(', ') }}
{{ t('performer_rate') }}: {{ formatMoney(budgetView(currentPerformer).amount) }}
{{ tag.name || tag }}
GitHub {{ contactLabel(c.kind) }} {{ t('no_contact') }}

{{ t('performer_projects') }}

{{ t('performer_orders') }}

{{ r.title }}

{{ r.description }}

{{ kindLabel(r.kind || r.type) }}
{{ (r.title || '?').slice(0,1) }}

{{ r.title }}

{{ r.description }}

{{ r.startupName || r.startupSlug }}
← {{ t('back') }}
{{ statusLabel(routeError.code === 'pending_moderation' ? 'pending' : 'rejected') }}

{{ routeError.code === 'pending_moderation' ? t('project_pending') : t('project_rejected') }}

← {{ t('back') }}

{{ currentStartup.name }}

{{ currentStartup.url }} {{ currentStartup.github }}
{{ t('posted') }} {{ fromNow(currentStartup.createdAt) }}
{{ t('updated') }} {{ fromNow(currentStartup.updatedAt) }}
{{ statusLabel(currentStartup.status) }} {{ stageLabel(projectKind(currentStartup)) }}
{{ t('project_publisher') }}
{{ currentStartup.publisher.name }}

{{ currentStartup.publisher.headline }}

{{ t('performer_title') }}

{{ t('roles') }}

{{ t('no_roles') }}

{{ r.title }}

{{ tag }}
{{ t('highlight_badge') }}

{{ t('carousel_title') }}

← {{ t('back') }}

{{ t('apply_title') }}

{{ t('apply_target_hint') }}

{{ (currentStartup && currentStartup.name) || currentRole.startupSlug }}
{{ currentRole.title }}

{{ currentRole.description }}

{{ kindLabel(currentRole.kind) }} {{ currentRole.payment.budget }} {{ currentRole.payment.cur || 'USDT' }} {{ tag }}

{{ t('proposal_login') }}

{{ t('nav_auth') }}
{{ t('proposal_score') }}: {{ formApply.score }}
{{ t('apply_external') }}

{{ t('auth_title') }}

{{ t('nav_auth') }}

{{ t('mine_empty') }}

{{ t('create_order') }}

{{ route.slug ? t('edit_startup') : t('create_startup') }}

{{ t('agent_form_title') }}

{{ t('agent_form_hint') }}

{{ agentPrompt }}

{{ formRole._id ? t('edit_role') : t('create_order') }}

{{ t('agent_form_title') }}

{{ t('agent_form_hint') }}

{{ agentPrompt }}

{{ formRole.startupId ? t('task_attach_project_hint') : t('task_attach_standalone_hint') }}

{{ t('profile_title') }}

{{ t('agent_form_title') }}

{{ t('agent_form_hint') }}

{{ agentPrompt }}
{{ t('profile_agent_key_title') }}

{{ t('profile_agent_key_hint') }}

{{ t('auth_registered') }}
{{ displayedAgentKey }}

{{ t('profile_agent_key_hidden') }}

{{ t('profile_agent_key_none') }}



{{ t('prefs_title') }}

{{ t('support_title') }}

{{ t('support_sub') }}

{{ t('support_limit_hint') }}

{{ t('auth_title') }}

{{ t('auth_mvse_hint') }}

{{ t('auth_signed_in') }} {{ me.name || me.id }}
{{ t('auth_section_browser') }}

{{ t('auth_mvse_hint') }}

{{ t('auth_section_key') }}

{{ t('auth_key_hint') }}

{{ t('auth_registered') }}
{{ onceKey }}
{{ toast }}