본문 바로가기

💻 개발209

MVC Response - Spring MVC Spring MVC의 응답을 학습해보자 1) Welcome Page 스프링 부트는 정적 페이지와 템플릿 시작 페이지를 모두 지원 구성된 정적 콘텐츠 위치에서 index.html 파일을 찾음 하나라도 없으면 index 템플릿을 찾음 둘 중 하나라도 찾으면 자동으로 응용 프로그램 시작 페이지로 사용 파일 경로 resources ㄴ static ㄴ index.html or resources ㄴ templates ㄴ index.html 테스트 welcome page 설정 연습 테스트 메서드 : ResponseStaticTest.responseIndexPage 수행 방법 resources/static/hi.html을 이용해서 학습 테스트 성공시키기 welcome page 설정을 위해 적절한 위치에 이동 혹은 파일.. 2023. 12. 5.
Spring Annotation MVC - Spring MVC Spring MVC 클라이언트에서 서버로 요청을 보내기 위해서는 수많은 작업이 필요하다. 프레임워크 사용 x : 실제 비즈니스 로직보다 더 많은 부분의 코드를 작성해야 할 수 있음 프레임워크 사용 o : 부수적인 부분을 프레임워크를 통해 해소하면 개발자들은 비즈니스 로직에 좀 더 집중할 수 있음 Spring MVC 도식화 Spring MVC를 도식화하면 클라이언트와 소통하는 모듈로 설명할 수 있음 클라이언트로부터 온 요청을 처리할 로직에 따라서 처리한 후 응답을 하는 역할을 가지고 있음 기능 요청에 따라 처리 로직 분기하는 기능 요청에 담긴 정보를 객체로 사용할 수 있게 도와주는 기능 클라이언트가 필요한 형태로 응답을 만들어주는 기능 BDD 동아리 Spring 스터디 공부 자료를 참고하였습니다. 우테코의.. 2023. 12. 5.
HTTP - Spring MVC 요청과 응답 Q. 사용자가 브라우저를 통해 Nextstep 페이지에 들어가는 동안 어떤 과정을 거칠까? A. 사용자는 브라우저 주소창에 입력 Nextstep 사이트의 주소를 입력 브라우저는 주소를 인식해서 어디에 요청을 보낼지 판단하고 해당 서버에 요청을 보냄 서버는 여러 절차를 거친 뒤 요청을 한 브라우저에 요청을 받은 것을 응답 브라우저는 서버로부터 받은 정보를 이용하여 페이지를 만들어 사용자에게 보여줌 우리는 서버에 요청했다고 하고 클라이언트에 응답했다고 함 브라우저가 아니더라도 터미널로 확인 가능 (개발자 도구 이용) 서버와 클라이언트간에 어떤 요청과 응답이 오갔는지는 개발자 도구를 통해 확인 가능 내용을 살펴보면, 특별한 양식이 있는 것을 확인 가능 (해당 양식을 HTTP라고 부름) HTTP H.. 2023. 12. 4.
API Web Application 만들기 - Spring MVC 목적 클라이언트로부터 요청을 받으면 응답을 해주는 애플리케이션 만들기 GET /greeting 라는 요청을 보내면 인사말 응답 GET /greeting?name=brown 라는 요청을 보내면 name 인자를 포함한 인사말 응답 따라하기 Gradle 프로젝트 구축하기 프로젝트에 이어서 진행 Spring Web Starter 의존성 추가 지난번에 spring 프로젝트를 만들면서 추가했으므로 넘어간다. dependencies { implementation 'org.springframework.boot:spring-boot-starter-web' } 관리할 객체 만들기 Greeting 코드 작성하기 lombok을 따로 설치하지 않았기 때문에 직접 필요한 함수 모두 작성하기 class 내부에 생성자를 만들어줘야 .. 2023. 12. 4.
Gradle 프로젝트 구축하기 목적 Gradle을 이용하여 프로젝트를 빌드하고 실행하기 따라하기 Gradle이 빌드할 Java 프로젝트를 설정 IntelliJ에서 New Project를 통해 프로젝트 생성 가능 Q. Gradle vs Maven New Project로 프로젝트를 생성하는 중 Gradle과 Maven의 차이가 궁금해졌다. A. Gradle과 Maven은 모두 빌드 관리 도구(Build Tool) Build(빌드) : 소스코드 파일을 컴퓨터에서 실행할 수 있는 독립적인 형태로 변환하는 과정과 결과를 말함 우리가 작성한 소스코드를 프로젝트에서 쓰인 각각의 파일 및 자원을 JVM이나 톰캣 같은 WAS가 인식할 수 있도록 패키징하는 과정 및 결과물 Build-Tool : 소스코드에서 애플리케이션을 생성하면서 여러가지 외부 라이.. 2023. 12. 4.
Framework와 Project 왜 프레임워크를 사용하는가? 다음은 초간단하게 만들어 볼 수 있는 방문 횟수 애플리케이션이다. 초간단 방문 횟수 조회 서비스 → 단 3개의 파일로 동작하는 애플리케이션을 만들 수 있다. GitHub - next-step/spring-learning-test at simple Q. 이게 가능한 이유는? A. build.gradle에 선언된 의존성 때문 → 코드 몇 줄만 작성해도 많은 것을 만들 수 있다. 이는 프레임워크가 있었기 때문에 비즈니스 규칙만 구현하고도 프로그램을 완성할 수 있다. Spring 단순 프레임워크라기 보다는 다양한 분야로 애플리케이션 제작에 도움을 주는 프로젝트 그룹 Java 기반 엔터프라이즈 애플리케이션 제작에 도움을 주는 전반적인 프로그래밍 / 설정 모델 제공 → 이 과정에서 집중.. 2023. 11. 29.
졸업과제 수상 및 회고 졸업과제는 성공적으로 마무리가 되었다!! 네트워크·클라우드·블록체인 분과에서 금상을 수상하였다. 🏆 다양한 시도와 노력을 한 덕분에 좋은 결과를 얻게 된 것 같아서 뿌듯하다. 전체적으로 이번에 진행하게 된 졸업과제를 통해 서비스가 어떻게 구성이 되어있고, 어떻게 동작하는지에 대해 많이 알아갈 수 있었다. 또한, MSA 방식으로 여러 개의 서버를 구축해서 사용했기 때문에, 각각의 서버들이 서로 어떻게 통신을 하는지에 대해서도 알 수 있게 되었다. 구현하는 과정에 있어서는 정말 힘들었다. 이론으로만 알고 있던 멀티클라우드를 실제 서비스에 적용시키는 것과 kubernetes도 쉽게 이해할 수 있는 내용이 아니었고, docker를 선 지식으로 알고 있어야 했기 때문이다. 하지만, 고생한 만큼 실력이 많이 성장한.. 2023. 11. 13.
서비스 배포하기 이제 서비스 배포해보자. 이제까지 했던 과정을 한번에 정리하기 위해 서비스 배포는 글을 마지막에 작성하려고 했다. 크게 보면 3가지로 구성되어있다. SpringBoot & MariaDB Flask https 접속 [SpringBoot & MariaDB] 0) code 작성하기 application yml 파일 분리하기 docker-compose 파일 작성하기 (springboot, mariadb) Dockerfile 작성하기 1) EC2 구축 ubuntu 22.04 / t2.micro / EBS 10GiB t2.micro로는 RAM이 작기 때문에 memory를 늘리기 위해 swap을 해주었다. 2) JDK 17 설치 # Install JDK 17 sudo apt update sudo apt install.. 2023. 10. 19.
kubernetes server에서 flask 서버로 정보 전송 사용자의 가상 환경을 그대로 보존하여 Private Docker Registry에 저장하려고 한다. 구현하기 위해 만족해야 하는 상태는 2가지이다. 사용자의 가상환경이 Kubernetes Server에서 상태 유지가 되고 있는가? 가상환경을 그대로 보존하여 Docker Image로 만들 수 있는가? [가상환경 상태 유지하기] 참고 링크 https://nirsa.tistory.com/157 사용자의 가상 환경(pod)에 pv, pvc를 할당해 상태를 유지한다. [Docker Image로 만들기] 팀원과 의견을 나누는 도중에 전체적인 IDEA 흐름이 나오게 되었다. 내가 제시한 방법은 다음과 같다. Kubernetes에서 Flask로 사용자의 container image 정보 전달 (kubectl cp) F.. 2023. 10. 19.
kubernetes 사용하기 (2) (with nCloud) 동적으로 노드의 ip를 추출하는 방법을 구현해보자. 구현 아이디어 구현 아이디어는 다음과 같다. 노드의 ip와 추출한다. pod에 할당된 노드의 이름을 알아낸다. 노드의 이름에 해당하는 노드의 ip를 찾는다. kubectl get nodes -o wide 위의 명령어를 입력했을 때, 나오는 EXTERNAL-IP와 실제 노드에 할당된 공인 ip가 동일한 것을 확인 코드 작성 [노드 IP 추출하기] # node의 이름과 ip를 추출하기 위한 용도 def extractNodesInfo(): result = os.popen("kubectl get nodes -o wide --kubeconfig /root/kubeconfig.yml").read() print("result:", result) nodeInfoLis.. 2023. 10. 4.
kubernetes 사용하기 (with nCloud) kubernetes를 어떻게 적용해야 할까? IDEA 1 사용자 1명 당 1개의 Pod를 할당하고 해당 Pod에서 사용자별 container 관리하기 [구현 상세 IDEA] 1) 사용자가 가상 환경 container(container A)를 생성한다. (이때, Pod 1개가 새롭게 생성됨) a. 사용자에게 생성된 Pod가 없을 때만, Pod가 새롭게 생성됨 2) 사용자가 다른 가상환경 container(container B)를 1개 더 생성한다. 3) 이때, 미리 생성된 Pod(container A가 있는 Pod)에 container B가 할당된다. IDEA 2 Pod를 만들어 놓고, Pod yaml 파일에 사용자를 추가하는 방식 (사용자 1명 당 vCPU 1EA, 2GB) [구현 상세 IDEA] 1) .. 2023. 10. 4.
MSSQL 가이드 문서 pr 반영하기 가이드 문서를 좀 더 보완해주고 pr을 올렸다. comment도 같이 남겼다. 가이드 문서까지 작성하니, 개발을 실감했다. 나중에 반영되어서 terraform registry에 보여진다면 뿌듯할 것 같다 !! 2023. 9. 23.