전체 글 151

API(Application Programming Interface)

해당 내용은 AWS에서 작성 된 글을 참고 했고 저의 생각을 정리했기 때문에 참고 부탁드리겠습니다. API가 무엇일까? 다른 소프트웨어 시스템과 통신하기 위한 규칙을 정하게 되는데 이를 API로 표시하는 방법이라고 한다. Interface라는 단어가 있기 때문에 중간에서 서로간의 소통을 하기 위한 표현방법(?)이지 않을까? 이러한 소통을 위해 정보를 주고 받는 이동수단(?)을 HTTP라는 프로토콜을 사용해서 값을 전달한다?라고 이해하고 있다. 웹 리소스라는 단어 찾으면서 특정 블로그 글을 보았는데 http://jm-baek.tistory.com/manage/newpost/?type=post&returnURL=%2Fmanage%2Fposts%2F 현재 블로그 글을 작성하고 있는 URL을 보면 위와 같이 [..

어노테이션 for 스프링

스프링에서 자주 사용하는 어노테이션을 생각 나는대로 적어보자~! @Controller: 컨트롤러 계층 등록 @RestController: 컨트롤러에서 View가 아닌 Json 형태로 객체를 반환할 때 @Service: 서비스 계층 등록 @Component: 내부적으로 자주 사용하는 메소드를 작성 할 때(?) @Configuration: 외부 라이브러리를 빈으로 등록 할 때(?) @Override: 인터페이스에서 작성한 메소드를 서비스에서 정의하기 위해 사용할 때 @Autowired: 객체 의존성 주입을 할 때~! @RequestBody: 요청 데이터를 Request 객체가 아닌 VO나 MAP 등으로 매핑할 때? @Data: LOMBOK의 어노테이션으로 @Getter / @Setter, @ToString,..

HTTP 프로토콜

인프런의 김영한님 강의를 보고 정리한 내용입니다. 먼저, 프로토콜이 뭔데? 나무위키에서는 프로토콜을 컴퓨터 또는 전자기기 간의 원활한 통신을 위해 지키기로 약속한 규약 통신을 하기 위해서 우편물과 같이 발신 수신 등의 정보와 관련 된 IP와 MAC 주소 등이 필요한데.. 우편물의 편지와 같은 HTTP에 대해서 알아보자. HTTP(HyperText Transfer Protocol) TCP: HTTP/1.1, HTTP/2 UDP: HTTP/3 HTTP/1.1을 주로 사용한다고 한다. 2와 3도 점점 사용한다. 서버간에 데이터를 주고 받을 대도 대부분 HTTP 사용한다. 특징 클라이언트 서버구조 클라이언트는 서버에 요청을 보내고, 응답을 대기 서버가 요청에 대한 결과를 만들어서 응답 무상태 프로토콜(state..

service, 비즈니스 로직이 뭔데?

저의 생각을 정리한 글입니다.! 참고만 해주세요. Serice 계층이 하는 역할이라고 하면 비즈니스 로직을 처리한다. 라는 얘기를 많이들었다 그래서 비즈니스 로직이 뭔데? 라고 궁금증이 생길 수 있다. 이 부분에 대해 일하면서 나의 경험을 얘기해보려고한다. 나의 생각에는 비즈니스 로직은 회사에서 특정 도메인을 처리하는 방법(설계?)이 있을거다. 조금 더 자세하게 예를 들면 "결재"(결제가 아니다)를 해야 하는데 회사마다 상황에 따라 결재 방식이 다르고 또한 어떻게 처리하기로 한다 라는 기준이 정해져있을 것이다. 그 외에 디테일한 처리 부분은 코드 작성하는 우리의 몫(?)이겠지만 회사마다 정해 놓은 처리하는 방법(비즈니스 로직)이 있다. 이게 바로 서비스 계층에서 처리하는 비즈니스 로직이 아닐까?라고 생각..

카테고리 없음 2023.04.12

controller, service, repository

세 개 레이어(controller, service, repository)가 DDD에 맞는 설계인지 방금알았따~! 뚜뚠. 각 계층마다 역할이 있는데 코드를 작성할 때면 controller, service 어디에서 처리하는게 좋을지 헷갈리는 경우가 가끔있다. 즉, 어느 범위까지 해당 계층이 처리해줬으면 하는 역할을 줘야하는지 실력(짬?)이 안되다 보니까 코드 마다 일관적이지 않는 부분이 있다. Service 계층에서 처리해야 되지 않을까 하는 부분을 Controller에서 처리하도록 한 적이 꽤 많다.(데헷) controller 클라이언트로부터 요청(Request)를 받고 서비스 계층으로 요청을 보내고 받은 처리된 결과를 반환하는 계층이다. service 비즈니스 로직 처리를 하는 계층으로 controlle..

DDD 설계 vs SQL 설계

제대로 이해를 못했기 때문에 해당 내용을 경계하며 읽어주셨으면 감사하겠습니다. 💥 Chat GPT가 알려준 예시이다. 주문 관리 시스템을 만든다고 가정해봅시다. SQL 중심 설계에서는 주문 데이터베이스 테이블이 존재하고, 이 테이블과 주문 상세 테이블, 상품 테이블, 회원 테이블 등이 서로 관계를 맺습니다. 따라서 데이터베이스 테이블 간의 관계가 중심이 되며, 비즈니스 로직은 데이터베이스 스키마에 맞게 설계됩니다. DDD 설계에서는 주문, 주문 상세, 상품, 회원 등의 도메인 개념이 중심이 됩니다. 예를 들어, 주문 도메인에서는 주문 생성, 주문 취소, 결제 처리 등의 비즈니스 로직이 포함됩니다. 이러한 비즈니스 로직을 기반으로 주문 도메인 객체가 설계되며, 데이터베이스 스키마는 이를 지원하기 위해 구성..

VO / DTO / Entity

내용이 틀릴 수 있기 때문에 경계하며 읽어주셨으면 좋겠습니다. 블로그 글을 보면 vo, entity, dto에서 더 나아가면 도메인 설계에 대해서도 언급이 된다고하는데 아직 어떻게 연관이 있는지 잘 모르겠다. 추후 이해가 된다면 해당 글을 수정할 수 있도록 하겠다. VO(Value Object) 메모리 주소가 다르지만(?) 해당 객체의 값이 같다면 같은 객체로 취급한다. 이를 위해서 eqauls와 hashmethod를 재정의하는 것 같다...!(아닐 수도 있다.) 그리고 값을 변경(setter)하면 안된다. 따로 메소드(로직)을 가져된다, DTO(Data Transfer Object) 계층 간의 데이터를 전송하는 객체라고 생각한다. 따라서, setter를 사용해도 괜찮지만 따로 메소드(로직)을 가져서는 ..

[자바 문법] 어노테이션(Annotation)

똑똑한 chat GPT와 다른 사람의 블로그 등을 읽고 이해한대로 정리한 내용입니다. 어노테이션(Annotation)? 자바 코드에 메타데이터(metadata)를 추가하기 위한 것으로, 컴파일러, 런타임 시스템, 개발 도구 등에 의해 사용됩니다. 어노테이션은 주석(comment)과 유사하지만, 주석은 컴파일되지 않으며 단순히 코드의 설명을 제공하는 역할을 하지만, 어노테이션은 컴파일되어 클래스 파일에 저장되며 실행 시에 사용된다. 메타 데이터(Meta Data)? 메타 데이터는 해당 데이터의 특성, 속성, 구조, 관계 등을 기술하는 데이터입니다. 즉, 메타 데이터는 데이터를 설명하는 데이터라고 할 수 있습니다. 예) 사진 파일의 메타 데이터에는 파일 크기, 파일 형식, 촬영 일자, 위치 정보 등이 포함됩..

[Python] 해시 테이블(Hast Table)

해시 테이블 👉 key - value 데이터 하나의 key와 그 key 에 해당하는 value를 합쳐서: key - value 쌍 이라고 한다. 하나의 key 에는 하나의 value 만 있어야 한다. 👉 Direct Access Table 인덱스 대신 key 를 사용한다고 보면 된다. 사용하는 인덱스는 5 이지만, 배열의 크기는 943개를 사용하고 있다. 효율적으로 key -value 쌍을 저장하고 가져올 수 있지만, 낭비하는 공간이 너무 커진다. 👉 해시 테이블 개념 해시 함수 특정 값을 원하는 범위의 자연수로 바꿔주는 함수 해시 함수의 조건 해시 테이블의 해시 함수는 결정론적이어야 된다. 똑같은 key를 넣었을 때, 항상 똑같은 결과가 나와야한다. 결과 해시값이 치우치지 않고 고르게 나온다. 아무 숫..