본문 바로가기

카테고리 333

Entity, DTO, DAO, VO Entity, DTO, DAO, VO Servlet, Spring 등을 사용하면 로직 구현이나 데이터 교환을 위해 Entity, DTO, DAO, VO를 사용하게 된다. 각각을 한마디로 요약하면 아래와 같다. Entity : 테이블 DTO : Data Transfer Object → 데이터 교환용 DAO : Data Access Object → 데이터 접근용 VO : Value Object → 데이터 교환용 (Read-only 속성의 DTO) Entity Database의 테이블에 해당하며, 주로 하나의 테이블에 하나의 entity를 정의한다. 테이블과 최대한 동일하게 클래스를 생성하고, 주로 테이블에 가지는 column들을 필드로 가진다. 주의할 점 다른 클래스를 상속받거나 구현체여서는 안되며, 데이터.. 2023. 4. 3.
MVC 패턴 (feat. Servlet/JSP) MVC Model + View + Controller의 구조로 이루어진 패턴(동작 방식)을 말한다. Model 데이터와 비즈니스 로직을 관리/처리한다. 즉, 사용자의 요청에 대한 업무를 처리한다. DAO(Data Access Object) 등의 Java class View 사용자가 보게될 결과 화면을 담당한다. (레이아웃, 화면 처리 등) HTML, JSP Controller 사용자의 입력 처리와 흐름을 제어하고, 사용자에게 받은 명령을 model이나 view로 라우팅한다. 사용자로부터의 입력에 대한 응답으로 모델/뷰를 업데이트하는 로직을 포함한다. Servlet 동작 방식 사용자의 action들은 controller가 감지한다. Controller는 사용자의 action을 확인하고 model을 업데이트.. 2023. 4. 3.
PRG 패턴 : Post → Redirect → Get 배경 : 멱등성 동일한 요청을 여러 번 연속해서 보낼 때 한번 보내는 것과 여러 번 연속해서 보내는 것의 결과가 같은 것을 의미한다. GET, HEAD, PUT, DELETE는 멱등성을 가지지만, POST는 멱등성을 가지지 않는다. 예시 GET 메소드를 연달아 호출해도 같은 결과를 나타내지만, 게시글을 등록하는 POST를 연달아 호출하면 호출한 횟수만큼의 게시글이 등록된다. (별도 처리를 하지 않은 상황 기준) 혹은, Servlet에서 게시글 작성이나 주문을 POST로 전송 후 해당 요청에 대한 응답으로 redirect가 아닌 forward로 처리할 경우 새로고침 시 게시글 작성/주문이 중복해서 처리될 수 있다. PRG 패턴의 필요 회원가입, 게시글 등록, 메뉴 주문 등은 대부분 POST를 통해 이루어지.. 2023. 4. 3.
Cookie, Session Connectionless, Stateless Server의 자원은 한정되어있으므로 server-client의 접속을 계속 유지하지는 않는다. 따라서 서버는 클라이언트의 요청에 응답한 후 연결을 지속하지 않고 끊는다. 연결(Connection)을 유지하지 않고 끊기 때문에 connectionless라 한다. 서버는 클라이언트의 정보(state)도 저장하지 않는다. 만약 클라이언트의 정보를 서버에서 관리한다면 무조건 해당 클라이언트는 해당 서버와 통신이 이루어져야 하기 때문이다. 이는 서버의 증설(scale-out)/관리를 어렵게한다. 이러한 특성을 stateless라 한다. Cookie, Session의 필요성 클라이언트의 로그인 정보나 특정 상태를 저장하고 유지해야할 때가 있다. 그런데 서버가 클라이언.. 2023. 3. 31.
CI/CD CI/CD 배경 기존에 비해 프로젝트/코드의 규모가 매우 커졌고, 형상관리나 배포 등을 수동으로 하기 어려워졌다. 때문에 개발자가 직접 코드를 통합하고 관리하는 것보다는 자동화시키는 것이 필요해졌다. CI/CD CI/CD = Continuou Integration (지속적인 통합) + Continuous Delivery/Deployment (지속적인 배포) CI/CD는 앱 개발을 자동화해서 더 짧은 주기로 고객에게 서비스를 제공하는 방법이다. 한번에 모든 기능을 테스트하는 것이 아니라, 분할하여 테스트를 진행함으로써 이를 도모한다. 장점 더 작은 단위로 더 자주 빌드~배포하기 때문에 아래와 같은 이점을 얻을 수 있다. 빌드 타임 ↓ 품질 ↑, 고객 만족도 ↑ 실패율 ↓ 개발자 생산성 ↑ : 빌드/배포에 .. 2023. 3. 30.