스프링부트와 Vue 기반 문화예술 행사 디지털 홍보 시스템 구현

시스템 개요 및 필요성

현대 사회는 문화 다양성과 예술 접근성에 대한 수요가 급증하고 있다. 글로벌화 속도가 빨라짐에 따라 예술 행사 수가 급격히 증가했지만, 전통적인 홍보 방식인 포스터, 배너, 오프라인 광고 등은 타겟 대상에게 정확하게 도달하기 어렵고, 정보 과잉 상황에서 사용자 관심을 확보하는 데 한계가 있다. 이에 따라 행사 운영자는 높은 홍보 비용, 낮은 참여율, 느린 피드백 사이클 등의 문제를 겪고 있다.

이러한 문제를 해결하기 위해 디지털 기술의 발전이 중요한 역할을 한다. 소셜 미디어, 대규모 데이터 분석, 인공지능 기반 추천 알고리즘 등은 맞춤형 마케팅과 개인화 콘텐츠 제공 가능성을 열었다. 세계 각국 정부 역시 문화 산업의 디지털 전환을 장려하고 있으며, 중국의 ‘인터넷+문화’ 전략이나 유럽연합의 ‘크리에이티브 유럽’ 계획 등은 기술을 통한 문화 확산의 중요성을 강조한다.

특히 팬데믹 이후 온라인과 오프라인을 결합한 하이브리드 형식의 예술 행사(예: 가상 전시회, 실시간 공연 스트리밍)가 확산되며, 단순한 티켓 판매 시스템을 넘어서는 종합 관리 플랫폼의 필요성이 부각되고 있다. 현재 대부분의 솔루션은 특정 단계(예: 예매, 입장 관리)에 국한되어 있어, 행사 전·중·후 단계를 아우르는 통합적 데이터 흐름이 부족하며, 정보 격차와 자원 분산 문제가 발생한다.

또한 젊은 세대는 짧은 영상, 인플루언서 콘텐츠, 증강 현실 필터 등을 통해 문화 콘텐츠를 소비하는 경향이 강해졌으며, 기존의 일방적 홍보 방식은 이러한 소비 패턴에 부합하지 않는다. 더불어 문화 접근성의 불균형 문제도 심각한 사회적 이슈로 부각되고 있는데, 지역적 제약이나 특수 집단의 참여 제한이 지속되고 있다. 이를 해결하기 위해 지능형 시스템을 활용한 자원 재배분이 필수적이다.

이러한 현실적 요구와 기술적 가능성은 문화예술 행사 전반을 지원하는 종합적인 디지털 플랫폼 개발의 핵심 동력이 된다. 본 시스템은 다학제적 기술 통합을 통해 효율적이고 포용적이며 지속 가능한 디지털 홍보 생태계를 구축하는 것을 목표로 한다.

개발 환경 구성

  • 백엔드 언어: Java 8
  • 프레임워크: Spring Boot
  • 데이터베이스: MySQL 5.7 (필수)
  • IDE: IntelliJ IDEA / Eclipse / MyEclipse
  • 빌드 도구: Maven 3.3.9
  • 서버: Tomcat 7
  • 데이터베이스 관리 도구: Navicat 11
  • 브라우저: Google Chrome

접근 경로 안내

  • 관리자 페이지: http://localhost:8080/프로젝트명/admin/dist/index.html
  • 사용자 페이지: http://localhost:8080/프로젝트명/front/dist/index.html (사용자 인터페이스 미지원 시 무시)
  • 관리자 계정: admin, 비밀번호: admin

핵심 기술 설명

Java 언어 특징

Java는 객체 지향적, 정적 타입 프로그래밍 언어로, 복잡한 시스템을 모듈화하여 독립적으로 개발하고 유지보수할 수 있도록 설계되었다. 주요 특징으로는 캡슐화, 상속, 다형성 등 객체 지향 원칙이 있으며, 이는 코드 재사용성과 보안성을 높이는 데 기여한다. 또한 자동 메모리 관리(가비지 컬렉션)와 예외 처리 체계를 통해 시스템의 안정성과 신뢰성을 보장한다. 웹 애플리케이션 개발에 적합한 네트워크 인터페이스와 표준 라이브러리 지원도 강점이다.

Spring Boot 프레임워크

Spring Boot는 전통적인 스프링 설정 파일의 번거로움을 줄이고, 애플리케이션 생성부터 배포까지 간편하게 처리할 수 있도록 설계된 프레임워크다. 내장형 서버(예: Tomcat), 자동 구성, 의존성 관리, 통합된 시작 클래스를 통해 개발자가 기본 설정을 거의 신경 쓰지 않아도 되도록 한다. 또한 다양한 외부 라이브러리와의 호환성 보장을 위해 내장된 의존성 버전 관리 시스템을 제공하여 라이브러리 충돌 문제를 최소화한다.

MySQL 데이터베이스

MySQL은 고성능, 저비용의 관계형 데이터베이스 시스템으로, 데이터 저장, 검색, 조작에 매우 효과적이다. 특히 간결한 SQL 문법과 높은 데이터 공유성, 낮은 중복률, 확장 용이성 덕분에 다양한 규모의 애플리케이션에 적합하다. 보안 기능으로는 사용자 인증, 데이터 암호화, 접근 제어 기능을 포함하고 있으며, 웹 기반 서비스의 백엔드 데이터 저장소로 가장 널리 선택되는 기술 중 하나다.

기능 샘플 코드

// 파일 업로드 컨트롤러
@RestController
@RequestMapping("/upload")
public class FileUploadController {

    @Autowired
    private ConfigService configService;

    @PostMapping("/file")
    public ResponseEntity<Map<String, Object>> handleFileUpload(@RequestParam("file") MultipartFile file, String fileType) {
        if (file.isEmpty()) {
            return ResponseEntity.badRequest().body(Map.of("error", "파일이 비어 있습니다."));
        }

        // 확장자 추출
        String extension = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(".") + 1);
        String timestamp = System.currentTimeMillis() + "." + extension;
        
        // 파일 저장 경로 설정
        File uploadDir = new File("src/main/resources/static/upload/");
        if (!uploadDir.exists()) uploadDir.mkdirs();

        File destFile = new File(uploadDir, timestamp);
        try {
            file.transferTo(destFile);
        } catch (IOException e) {
            return ResponseEntity.status(500).build();
        }

        // 타입이 'face'면 설정 테이블에 저장
        if ("face".equals(fileType)) {
            ConfigEntity config = new ConfigEntity();
            config.setName("profile_image");
            config.setValue(timestamp);
            configService.saveOrUpdate(config);
        }

        Map<String, Object> response = new HashMap<>();
        response.put("filename", timestamp);
        response.put("url", "/upload/" + timestamp);

        return ResponseEntity.ok(response);
    }
}
<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <title>메인 리디렉션</title>
<script>
    window.location.href = "/admin/dist/index.html";
</script>
</head>
<body>
    <!-- 리디렉션 후 로딩 -->
</body>
</html>

테스트 및 검증

시스템은 로컬 서버에서 설치 후, 단위 테스트, 통합 테스트, 성능 테스트를 수행하였다. 테스트 전략은 고객 요구사항 기반으로 설계되었으며, 페어토 원칙에 따라 전체 오류의 80% 이상을 차지하는 핵심 모듈에 집중 테스트를 진행하였다. 초기에는 단일 컴포넌트 테스트를 수행한 후, 점진적으로 연계 테스트를 확장하며, 모든 로직 경로를 커버하도록 설계된 테스트 케이스를 적용하였다.

종합 평가

본 시스템은 기존의 단일 기능 중심 솔루션과 비교해 행사 전반의 관리, 홍보, 참여자 반응 수집, 데이터 분석까지 통합된 기능을 제공한다. 유지보수성, 확장성, 사용자 친화성 측면에서 우수하며, 시스템 안정성과 보안성도 뛰어나다.

기술적으로는 다음과 같은 장점을 갖는다:

  1. Java 기반의 동적 웹 처리로 높은 재사용성과 유지보수성을 확보
  2. Spring Boot의 자동 구성 기능을 활용해 개발 생산성 극대화
  3. MySQL의 빠른 데이터 처리 능력과 확장성으로 대규모 데이터 관리 가능

이 프로젝트는 단순한 과제를 넘어, 실제 문화예술 활동의 디지털 전환을 지원할 수 있는 실질적인 도구로 발전할 수 있는 잠재력을 지닌다.

태그: Spring Boot Vue.js MySQL java Web Application

6월 2일 19:11에 게시됨