1. FTP & SFTP

  • FTP(File Transfer Protocol) : 파일을 서버와 클라이언트 간 주고 받을 때 사용하는 통신 규약(프로토콜)
    • Active mode : 클라이언트가 서버에게 포트 번호를 알려주어 서버가 클라이언트와 통신하는 것
    • Passive mode : 서버가 클라이언트에게 포트 번호를 알려주어 클라이언트가 서버와 통신하는 것
  • SFTP : 기존 FTP에 보안 기능을 추가한 파일 전송 프로토콜로 암호화된 파일을 주고 받는다.

2. Proxy

프록시란 서버와 클라이언트 사이를 중계해주는 서버를 의미하고 ‘포워드 프록시’와 ‘리버스 프록시’로 구분된다.

  • Forward Proxy : 클라이언트 앞에 존재하여 클라이언트의 요청을 웹 서버에 도달하기 전 프록시 서버가 가로채고 이를 다시 웹 서버에게 전달한다.

    • 클라이언트가 특정 컨텐츠에 접근하는 것을 방지
    • 유저의 정체를 숨겨 준다.
  • Reverse Proxy : 포워드 프록시와 다르게 웹 서버 앞에 존재

    • 로드 밸런싱을 통해 서버가 과부화 되는 걸 방지
    • 본래 서버의 IP 주소를 노출하지 않아 보안에 좋다.
    • 캐시 데이터를 사용하여 서비스의 성능을 향상
    • 들어오는 모든 요청을 복호화하고 나가는 응답을 암호화 해주어 SSL 암호화에 좋다.

💡 Load Balnacing : 특정 서비스가 여러 서버를 사용할 경우 클라이언트의 요청을 서버에 과부하가 오지 않도록 분산 처리 하는 것


3. 탄력적 IP

  • EC2 인스턴스의 메모리 과부하로 인해 인스턴스가 재기능을 못하는 경우가 있는데 이 때 인스턴스를 중지 후 다시 시작(재부팅)을 하게 되면 인스턴스에 할당된 퍼블릭 IP 주소가 변경되어 Putty나 WinScp의 설정을 재부팅 할 때마다 바꿔줘야 한다.
  • 이를 해결하기 위해 인스턴스에 고정 IP를 부여해주기 위해 탄련적 IP를 생성하고 이를 기존에 만들었던 인스턴스에 연결 해주었다.


4. 추가 참고 사항

  • controller 마다 logger 변수 선언
  • 스프링 부트는 route가 따로 없고 컨트롤러에서 라우트 역할까지 수행
  • 도메인 마다 controller, provieder, service, dao 모두 필요
  • RequestMapping : 해당 controller에 기본적인 매핑 정보(url)
  • RequestParam(required= false) : 쿼리 스트링을 받오는 어노테이션, 쿼리 스트링이 없을 경우 오류를 반환하지 않고 없나보다 하고 넘어 감
  • JDBC 사용 시 select가 아닌 모든 쿼리문은 update로 진행된다
    • 반환 값은 update가 성공한 row의 갯수이다.
  • mysql의 last_insert_id : 하나의 insert 쿼리에 대해서 성공 시 마지막 auto_increment 값
  • .query ⇒ list를 받아오는 경우
  • .queryForObject ⇒ 한 가지 값(로우)만 받아오는 경우
    • 받아오는 값의 타입을 명시해준다.
  • .getChar()는 존재하지 않는다 → .getString() 사용 권장!
  • Error creating bean with name 'requestMappingHandlerMapping’ → 특정 url이 여러 개의 api에 중복될 때 발생
  • 프로젝트 빌드 시 .gradle이 있는 위치(root?)에 build 폴더 내 libs 폴더 안에 jar 파일이 존재한다.

로컬에서 빌드 안되는 문제는 내 pc의 자바 버전이 1.7이여서 였다…!(자바 버전과 롬복 버전을 확인하자)

profile
백엔드 개발자를 꿈꾸는 학생입니다!

0개의 댓글

Powered by GraphCDN, the GraphQL CDN