CASE STUDIES

Problems I solved
in production

A set of real production-environment problems and how I solved them. Each entry is laid out as situation → approach → implementation → result, with the relevant code and configuration included.

01 / ORGANIZATIONCurrent

Badabom@ Korea Institute of Marine Science & Technology Promotion (KIMST)

Jan 2026 - Present · Freelance · Developer

Operating and extending Badabom, KIMST's integrated marine R&D information system. Work spans SSO integration with partner sites, operational tooling like a live log viewer, and migrating external systems (OTT technology-trade) in — followed by a second-half push on the admin UI itself: a console shell rewrite and replacing the commercial data grid with an in-house component.

AUTH / SSO

Building an SSO Provider for Partner Sites

Implemented an SSO Provider so external partner sites (e.g., OTT) could sign in with Badabom accounts. Single-use UUID tokens stored in the database support multiple WAS nodes, and CI (Connecting Information) auto-maps accounts across both sides.

Spring MVCiBATISUUID TokenDB 세션 저장소CORS전자정부 프레임워크

External SSO integration · Auto account mapping

READ

DEVOPS / OBSERVABILITY

SSE + Cross-WAS Real-Time Log Viewer

The WAS lived in the Daejeon IDC, but network-segregation policy meant only Busan-office PCs could reach it — so pulling a log effectively meant flying to Busan. I built an SSE-based viewer inside the admin web and added a cross-WAS relay so logs from both WAS nodes stream into a single screen.

Spring MVCServer-Sent EventsRandomAccessFileProxy TokenJEUS전자정부 프레임워크

Removed Busan dependency · Unified multi-node view

READ

LEGACY MIGRATION

Migrating the OTT Technology-Trade System into Badabom

Moved an Oracle + MyBatis technology-trade platform (OTT) onto PostgreSQL + iBATIS. Rewrote 87 URLs, 34 JSPs, 80+ SQL queries, and 14 tables.

Spring MVC 4.3eGovFrame 3.9iBATIS 2.0PostgreSQLOracleJSPrMateGridH5

87 URLs · 80+ SQL migrated

READ

LEGACY UI / ARCHITECTURE

Wrapping 106 Admin Screens in a Console Shell Without Touching Them

The admin menu had to become a separate-window console, but rewriting ~100 /adm screens was off the table. I converted the existing SiteMesh decorator in place into a child decorator so every current mapping followed automatically, kept the topbar and sidebar resident in a parent shell, and swapped only the iframe body.

SiteMesh 3JSPiframeSpring MVCeGovFrameSessionTimer

0 screens rewritten · 225 screens swept

READ

FRONTEND / COMPONENT

Replacing a Commercial Data Grid With an In-House Component

Every admin list screen hand-rolled its own render loop and paging math, and the rest were locked to a commercial grid licensed per server. I built an in-house grid that absorbs the existing response contracts as-is, then moved ~80 screens onto it without changing a single line of server code.

Vanilla JS (ES5)jQuery 3SheetJSWeb WorkerKWCAG 2.2eGovFrame

0 server changes · license dependency removed

READ
02 / ORGANIZATION

Freelance · Side Projects@ Independent

2025 - Present · Product · Design · Development

Projects I initiated on my own or pitched to clients. I own the full cycle — concept, design, development, and deployment.

03 / ORGANIZATION

GAIS — Government Advertising Integrated Support System@ Korea Press Foundation (KPF)

Aug 2020 - Dec 2025 (5y 4m) · Freelance · PL/AA

Operated the government-advertising integrated support platform as PL/AA. Scope covered CI/CD build-out, session clustering, TLS upgrades, and infra/security/deploy automation.

Case Studies | Sungmoo Shin Portfolio