본문 바로가기

전체 글

(189)
[HTTP] HTTP 메서드 - GET, POST, PUT, PATCH, DELETE [HTTP 메서드란?] 클라이언트가 서버에게 무엇인가를 요청할 때 기대되는 행위를 말한다. ◆ GET : 리소스 조회 - 서버에 전달할 데이터는 쿼리 스트링, 쿼리 파라미터 형태로 전달한다. - url에 적혀있는 path에 따라 리소스를 요청한다. - 주로 캐싱이 필요한 작업일 때 사용한다. ◆ POST : 주로 등록, 요청하는 데이터에 대한 처리 - 데이터를 과 같은 곳에 담아서 클라이언트가 서버로 전달한다. - 메시지 바디를 이용해서 요청할 데이터를 서버로 전달한다. - POST 메서드는 서버에서 위와 같이 전달된 데이터를 처리하는 모든 기능을 수행한다. - 사전에 정해진 path로 전달된 데이터는 서버에서 처리하기로 약속이 되어있어야 한다. - 주로 신규 등록(데이터 생성), 프로세스 변경(프로세스..
소프트웨어 공학 3R 완성된 소프트웨어를 기반으로 3R을 통해 소프트웨어의 생산성을 극대화 하는 기법 1. 역공학(Reverse Engineering) - 이미 개발된 시스템을 CASE 도구의 도움을 받아서 사양서, 설계서 등의 문서로 추출하는 작업 - 역공학 하는 이유는 이미 운영되고 있는 시스템이 오래되서 문서가 없을 경우, 시스템을 버리기 보다 소스코드를 분석하면서 어떤 설계서가 있었겠고, 어떤 요구사항이 있었겠다 등 문서를 추출한다. - 즉, 유지 운영을 위해서 사용한다. - ex. 은행 시스템 - 상용화되거나 이미 개발된 소프트웨어의 분석을 도와준다. 더보기 * 차세대? -> 기존에 있는 시스템을 재개발(새롭게 만든다.)하면서 기존에 있던 것을 재사용 한다. -> 재개발 + 재사용 * 고도화? -> 기존에 있는 시스..
[WhereWare] 파일 삭제 하면서 작성자 PK가 사라지는 문제점 [문제 상황] 기존에 글 작성하기를 통해 첨부파일이 추가되어 있는 상황 기존 첨부 파일을 삭제 를 누르면 기존 파일이 삭제 된다. 하지만 이 boardAttach가 삭제됨과 동시에 edit 컨트롤러 로직을 타면서 // ▼ 게시글 수정 @GetMapping("/edit") public ModelAndView edit(@SessionAttribute("loginMember") Member loginMember, ModelAndView model, @RequestParam("no") int no) { Board board = service.findBoardByNo(no); List boardAttachlist = service.getBoardAttachList(no); if(loginMember.getNo()..
[Whereware] 부트스트랩 사용시 세션 false 설정 주의하기 [문제 상황] - 회원 가입, 로그인 기능 구현을 완료했고, 로그인도 제대로 되는 상황이다. - 게시글 작성하기 버튼을 로그인한 멤버가 null이 아닐 경우( ! empty loginMember ) 일 경우에만 보이게 하려고 태그를 사용했다. 그런데 로그인이 된 상황임에도 불구하고 버튼이 제대로 보이지 않는 상황! (다른 팀원들도 전부 마찬가지) [생각해보기] https://chichibaby.tistory.com/166 작성해놨던 블로그 글을 다시 찬찬히 읽어보면서 생각해봤다. 1) @SessionAttributes("키값") - Model 객체(requst scope)에 "키값"에 해당하는 Attribute를 Session Scope까지 범위를 확장시킨다. - 단, 확장하는 역할만 할 뿐, 실제 se..
[WhereWare] 게시글 작성 view에서 안 보이는 문제 게시글 작성 테스트 중인데 글 작성해보면, 데이터베이스에는 값이 잘 들어오고 컨트롤러에서도 log.info(board.toString()); 해보면 Board의 no 값도 잘 나오는 상황... 그런데 게시글 전체 list하고 게시글 상세보기 view에서는 빈 화면이 나온다. 사진을 보면 현재 6페이지인데 7, 8 페이지는 내가 테스트할 때 작성한 더미데이터가 실제 DB에도 있기 때문에 페이징이 점점 늘어나는 상황이다. 그런데 게시글 목록에서는 나오지 않고, 상세 보기도 이렇게 틀만 나오는 상황이다. 대환장 해결 과정은 찾으면 업데이트 할 것 찾아본 결과! emp_no가 없어서 그런 것! 왜냐면 지금까지 아직 로그인/회원가입을 구현한 부분과 합쳐지지 않고 그냥 테스트 하다보니까 BOARD 게테이블의 데이터..
DAY 180. 애플리케이션 배포 설정 스케줄링 컨테이너를 새롭게 생성할 때 어느 서버에 생성할 것인지 결정하는 것 컨테이너를 생성하기 전에 특정 목적에 부합하는 Node를 선택하는 작업 여러 개의 Node를 사용하는 경우 해당된다. nodeSelector Node의 Label을 이용해서 선택하는 방법 모든 Node에는 기본적으로 설정되어 있는 라벨이 있고 이를 이용해서 Node를 특징 별로 분류해서 선택할 수 있다. 필요한 경우 추가할 수 있다. yaml파일에 작성할 때는 사용할 Node의 기준이 되는 라벨을 지정하면 된다. kubectl get nodes --show-labels ▶ Node Label 삭제 Label 뒤에 -(대시)를 입력하면 삭제됨 kubectl label nodes Node이름 삭제할Label명- 컨트롤러 클러스터의 ..
DAY 179. 쿠버네티스(Kubernetes) - HPA 더보기 [시작하기에 앞서] 웹 서버가 감당할 수 없는만큼 사용자 양이 크게 늘어났을 경우 처리 방법 1. Scale-up : 서버 자체 성능을 향상 시킨다. - 서버를 더 많은 숫자의 사용자를 감당할 수 있도록 스케일 업 한다. - 그러나 하드웨어에는 물리적으로 한계가 있다. 2. Scale-out : 동일한 서버를 여러 개를 운영한다. - 2대 이상 증설하여 서버를 운영하는 것을 스케일 아웃 이라고 한다. - 사용자들이 보내는 요청, 즉 트래픽을 균일하게 분배해주는 로드 밸런서가 필요하다. ▷ 로드 밸런싱 : 로드 밸런서가 모든 요청을 받아서 적절히 서버에 분배해주는 부하분산 역할을 하는 것이 서비스 객체이다. ▷ ReplicaSet : 서버의 갯수가 일정히 유지되도록 한다. 서비스가 운영되면서 사용자..
Day 178. 쿠버네티스(Kubernetes) - Service Object Service Pod 집합에서 실행 중이 애플리케이션을 네트워크 서비스로 노출하는 추상적인 방법 Pods에 접근하기 위한 규칙을 정의 하나의 애플리케이션에 하나의 Pod만 사용하지 않고 Pod의 집합을 사용하는 경우 각 Pod는 고유의 IP 주소를 가지기 때문에 접근이 까다롭다. Deployment를 사용하는 경우 Pod는 동적으로 생성/소멸 될 수 있기 때문에 배포 중 동작되는 Pod의 IP 주소는 변경될 수 있다. 더보기 도커는 -p 옵션을 통해서 사용하는 호스트의 포트를 통해서 컨테이너의 포트로 포트 포워딩 시켜서 포트를 노출 시켰었다. -> 컨테이너 1개를 직접 노출했다. 쿠버네티스에서는 그렇게 할 수 없다. 그래서 Pod의 IP를 직접 확인하고, Pod를 하나 더 만들어서 내부에서 IP로만 직접..