TIL(Today I Learned)

Day.14 타임어택 및 웹 애플리케이션

지팡구 2022. 11. 16. 21:12

알고리즘 타임어택이 있던 당일

금일 9시부터 11시까지 Python 또는 Java를 이용해서 문제를 해결

 

솔직히 알고리즘에 자신이 없었지만 한번 풀어보자는 생각을 했다.

 

문제를 확인해보니 엥?.... 쉬운데?...

난이도는 쉬워서 수월하게 문제를 풀 수 있었지만, 프로그래머스를 처음으로 이용해봐서 계속 런타임이 났다..

 

그 이유는 코드 전체를 쓰는 것이 아니라, 로직부분만 구현했으면 됐다는...         :(

로컬에서는문제가 없는데 계속 런타임 오류가 나서 시간을 많이 소모했다. 

 

문제의 난이도는 프로그래머스 0단계 수준 조금만 생각하면 충분히 누구나 풀 수 있는 문제들이었다.

나는 기존에 자주 사용하던 Java를 이용해 문제를 해결했고, 4문제의 문제가 출제되었는데 4문제를 다 해결했다.

 

문제는 다음과 같다. (프로그래머스 코딩테스트 연습 문제)

 

1. 369 게임 -> 입력받은 수에 3,6,9에 따라서 박수를 몇번 처야하는지 count  

https://school.programmers.co.kr/learn/courses/30/lessons/120891

2. 할인 -> 가격에 따라 주어진 할인율이 있는데, 입력받은 수에 따라 할인률을 적용하고 지불금액 구하기

https://school.programmers.co.kr/learn/courses/30/lessons/120818

3. 각도기 -> 매개변수로 주어진 각도에 따라 결과 값을 return 하는 문제

https://school.programmers.co.kr/learn/courses/30/lessons/120829

4. 로그인 -> 입력받은 id,pw를 2차원 배열 속 정보와 비교해 로그인 유무를 return 하는 함수 작성하기

https://school.programmers.co.kr/learn/courses/30/lessons/120883

 

너무 쉽게 풀 수 있어서 정리라고 할 것이 없다..


그리고 인프런 Spring MVC 1탄 다시 정주행

웹 애플리케이션 서버 vs 웹 서버

 

비슷한 느낌을 주는 이 용어들은 경계가 모호하다. 그래서 간단한 특징들을 정리하고 장점과 단점을 통해 기억할 수 있도록 해야한다.

 

장점은? -> 둘 다 HTTP를 기반으로 동작

단점은? -> 웹 서버 같은 경우엔 정적 리소스를 제공하기에 특정 사용자에게 다르게 보여주는 방식이 불가능하다 

 

그러나 WAS(웹 애플리케이션 서버)는 웹 서버의 기능을 포함하며, 프로그램 코드를 실행해서 애플리케이션 로직을 수행할 수 있다.

 

보통 Web Server는 정적 페이지랑 가깝다 생각하면 되고, Web Application Server는 동적 페이지와 가깝다고 생각하면 쉽다. 

 

그럼 WAS는 웹 서버의 기능을 다 포함하고 있으니까 여기서 다 처리해버리면 끝 아님? 이라는 생각을 할 수 있다.

 

만약에 이 모든 로직과 처리 기능 등을 was에서 수행하면 당연히 부하가 몰릴 것이다. 

was 한 개만으로 운영을 하면 과부하의 우려가 커지고 이에 따라서 오류 발생 시 오류 화면 노출도 불가능하다 (입벤)

그래서 정적 리소스는 웹 서버가 처리하고, 애플리케이션 로직 같은 동적 처리가 필요하면 was에 요청하는 것이 좋다.

 

또한 효율적이다.

 

만약에 더 많은 was 혹은 web server가 필요하면? -> 그 필요한 부분만 증설하면 된다.

그래서 보통 was 앞 단에 web server을 두고 플러그인 형식으로 설정하면 효율적인 분산 처리가 가능하다. 

출처 : 인프런 김영한 스프링 MVC 1편
출처 : 인프런 김영한 스프링 MVC 1편