Azure Web App 서비스
- Azure 에서 HTTP 기반 웹 어플리케이션 및 API 를 호스팅 할 수 있는 Pass 서비스
- Azure VM 과 달리 배포, 스케일링, 보안, 관리 서비스 등을 Azure 에서 관리하는 형태로 제공한다.
- 주요 기능
- 여러 언어 및 프레임워크 지원 (ASP.NET, ASP.NET Core, Java, Ruby, Node, PHP, Python)
- OS 및 언어 프레임워크를 자동으로 패치하고 유지 관리
- 컨테이너화 및 Docker 서비스 지원
- 고가용성을 가진 글로벌 규모 조정
- 보안 및 규정 준수
- 서버리스 코드
- 배포 슬롯 (무중단 배포 및 테스트 환경 제공)
MPA + SSG hybrid
- 장점:
- 정적 페이지에 국한 되는 부분이지만 프론트엔드와 서버사이드 별도 분리 개발이 가능하다.
- 단점:
- 페이지의 일정 부분이 아닌 하나의 전체 페이지이기 때문에 서버사이드간에 데이터를 주고 받을 수 없다.
- 동적 url 처리 불가
목업 구현 테스트 (Java + Nuxt)
SPA 페이지의 특정 라우트 맵핑 경로가 ‘/kr/ko/e/’라고 가정
서버 사이드 설정
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
|
@Controller public class HomeController { @GetMapping({"", "/"}) public String index(Model model) { model.addAttribute("data", "hello!");
return "index"; }
@GetMapping({"/kr", "/kr/ko"}) public String nuxt_redirect() { return "redirect:/kr/ko/e"; } @GetMapping("/kr/ko/e") public String nuxt() { return "/client/index"; } }
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
|
@Configuration public class WebConfig implements WebMvcConfigurer { private final Logger logger = LoggerFactory.getLogger(this.getClass()); @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry .addResourceHandler("/kr/ko/e/**") .addResourceLocations("classpath:/static/kr/ko/e/") .resourceChain(false) .addResolver(new PathResourceResolver() { @Override protected Resource getResource(String resourcePath, Resource location) throws IOException { Resource requestedResource = location.createRelative(resourcePath); return requestedResource.exists() && requestedResource.isReadable() ? requestedResource : new ClassPathResource("/templates/client/index.html"); } }); } }
|