반응형 전체 글179 HTTP API의 올바른 설계 방법 처음 API URL을 설계하다보면 정말 이게 Best Practice인지 더 나은 방법이 없는지 끊임없이 고민했던 것 같습니다. 회원 API 메서드 설계 -1 회원 목록 조회 /read-member-list 회원 조회 /read-member-by-id 회원 등록 /create-member 회원 수정 /update-member 회원 삭제 /delete-member 과연 위와 같이 설계하는 방법이 best practice일까?? API URL을 설계할 때 리소스의 식별이 가장 중요합니다.위에 예시에서 회원을 조회, 삭제, 수정, 등록하는 게 리소스가 아닙니다. 회원이라는 개념 자체가 리소스입니다. 그러면 리소스를 어떻게 식별하는 게 좋을까? 회원을 등록, 수정, 조회하는 것을 모두 배제합니다. 회원이라는 .. 2022. 2. 6. HTTP 특징 정리🔗 HTTP/1.1 -> 주로 가장 많이 사용하고 있습니다. TCP 기반 HTTP/2 -> 성능개선, TCP 기반 HTTP/3 -> TCP 대신에 UDP 사용 및 성능개선 HTTP 특징 클라이언트 서버 구조(Request, Response 구조, 요청에 대한 결과를 만들어서 응답) 무상태 프로토콜(Stateless) 서버가 클라이언트의 상태를 보존하지 않습니다.(중요!) 장점 -> 서버 확장성이 높습니다.(스케일 아웃) 응답 서버를 쉽게 바꿀 수 있습니다. 단점 -> 클라이언트가 추가 데이터 전송, 데이터 정보를 많이 보내야 합니다. 중간에 서버 1이 장애가 발생해도 중계서버가 요청을 바로 서버 2로 던져주면 해결할 수 있습니다. 또한, 특정 이벤트가 몰릴 경우 해당 서버를 수평적으로 확장해서 해결할 수 있.. 2022. 2. 6. [함께자라기 애자일로 가는 길]을 읽고 ✅ 많은 신입 개발자에게 추천해주는 도서로 항상 함께 자라기가 있어 한번 읽어보고 싶었습니다. 출퇴근 시간에 지하철에서 낭비되는 시간이 싫어서 읽다 보니 재미있어서 금방 읽었습니다. 이 책에서는 크게 3가지 포인트로 나눠져서 이야기를 합니다. 자라기 말 그대로 학습에 관련된 이야기입니다. 첫 회사 인턴으로 입사했을 당시 이 부분이 상당히 어려웠던 기억이 있었습니다. 레거시 코드들을 현재 기술에 맞춰 성능개선 및 리팩터링 하는 것이었습니다. 저는 레거시 기술과 현재 회사가 사용하는 기술 둘 다 처음 접해보는 것이라, 퇴근하고 나서도 지속적으로 공부했던 기억이 있습니다. 마치 달리는 마차에 바퀴를 갈아 끼운다는 아주 유명한 문장이 있죠. 하나 배우는 것도 벅찬데 레거시 코드까지 뜯어고쳐야 한다니... 정말 힘들.. 2022. 2. 3. [객체지향의 사실과 오해]를 읽고 🐇 많은 개발자분들이 추천해주신 도서라 한 번쯤 읽어보고 싶었습니다. 완독 한지는 오래됐지만 기억에 오래 남아서 기억 남았던 부분을 정리해보려고 합니다. 이 책에서 중점적으로 설명한 것들은 바로 역할과 책임, 책임관계에서 바라본 객체지향입니다. 지금까지 객체지향이라 하면 공통적인 객체를 분리해서 재사용성을 높이고, 퍼즐 조각 맞추듯이 설계했습니다. 책을 읽고 나서 객체지향을 바라보는 시각이 조금 달라졌습니다. 대략 3가지 정도 기억에 남았었습니다. 객체지향 애플리케이션의 윤곽을 정하는 것은 역할, 책임, 협력입니다. 하지만 실제로 협력에 참여하는 주체는 객체입니다. 각각 사람마다 역할이라는 것이 있습니다. 예를 들어 스타벅스에 입장한 고객과 응대하는 캐셔, 바리스타의 역할은 다릅니다. 다른 역할 속에서 각각.. 2022. 2. 1. Spring 빈 스코프를 알아보자♻️ 빈 스코프는 말 그대로 스프링 빈이 존재할 수 있는 범위를 말합니다. 스프링은 아래와 같은 스코프를 지원합니다. 싱글톤: 기본 스코프, 스프링 컨테이너의 시작과 종료까지 유지되는 가장 넓은 범위의 스코프입니다. 프로토타입: 스프링 컨테이너는 프로토타입 빈의 생성과 의존관계 주입까지만 관여하고 더는 관리하지 않는 매우 짧은 범위의 스코프입니다. 웹 관련 스코프 request: 웹 요청이 들어오고 나갈때 까지 유지되는 스코프입니다. session: 웹 세션이 생성되고 종료될 때 까지 유지되는 스코프입니다. application: 웹의 서블릿 컨텍스트와 같은 범위로 유지되는 스코프입니다. https://applepick.tistory.com/129 스프링에서 싱글톤 적용 시 주의 할 점! ⚠️ 스프링 컨테이너.. 2022. 1. 31. http 정리 예정 웹 개발을 하다 보니 url 설정부터 시작해서 api 설계를 어떤 식으로 해야 할지 고민이 많았습니다. http의 개념을 한번 정리해서 나의 것으로 만들고 싶었습니다. 혼자 삽질하는 것도 중요하지만, 학습에 돈을 아낌없이 투자해야 한다는 마인드이기 때문에 책이든 인강이든 들으려고 노력하고 있습니다. 정말 http의 깊은 이해가 필요하다고 느껴져서 영한님의 "모든 개발자를 위한 HTTP 웹 기본 지식" 을 들으면서 공부하려고 합니다. 여기 카테고리는 http를 공부하면서 정리해보겠습니다. 감사합니다. 2022. 1. 30. @validation 이용해서 값 검증하기 + 예외처리까지!🔍 로그인 검증 부분을 어떻게 설계할까 고민을 많이 했습니다. 하드코딩과 @validation 두 가지를 고려했습니다. 1. 하드코딩 하드코딩으로 만든다면 각각의 계층에서 연속적으로 검증을 해줘야 하는 번거로움이 있습니다. 또한 검증 로직이 변경될 경우 각 계층을 같이 봐야하는 어려움이 있습니다. 2.Bean Validation java는 Bean Validation라는 유효성검사 프레임워크를 지원하고 있습니다. 각 계층에서 검증하는 것이 아닌 빈 어노테이션을 통해 공통적으로 필요한 부분만 검증할 수 있게 되었습니다. 시작 gradle 설정 dependencies { implementation 'org.springframework.boot:spring-boot-starter-validation' } 의존성을.. 2022. 1. 30. Spring Boot gradle 환경에서 logback을 적용해보자. 🔥 팀 프로젝트 진행 중에 로깅 관련돼서 도입하려고 했습니다. 고민했던 것이 log4j와 logback이었습니다. 결정적으로 logback을 선택했던 이유는 기본적으로 스프링 부트는 SLF4 J(Simple Logging Facade for Java)를 이용하여 로그를 관리합니다. 아래는 log4j와 logback의 밴치마킹 비교글입니다. https://www.loggly.com/blog/benchmarking-java-logging-frameworks/ Benchmarking Java logging frameworks | Loggly Two years ago, Loggly ran a series of performance tests on some of the most popular Java logging .. 2022. 1. 27. Bean의 생명주기 콜백 🌱 스프링 빈의 생명주기 [객체 생성 -> 의존관계 주입] 대부분 스프링 빈은 위와 같이 라이프사이클을 가집니다. 스프링 빈은 객체를 생성하고, 의존관계 주입이 다 끝난 다음에야 필요한 데이터를 사용할 수 있는 준비가 완료됩니다. 따라서 초기화 작업은 의존관계 주입이 모두 완료되고 난 다음에 호출해야 합니다. 스프링은 의존관계 주입이 완료되면 스프링 빈에게 콜백 메서드를 통해서 초기화 시점을 알려주는 다양한 기능을 제공합니다. 싱글톤을 사용 시스프링은 스프링 컨테이너가 종료되기 직전에 소멸 콜백을 줍니다. 따라서 안전하게 종료 작업을 진행할 수 있습니다. 스프링 빈의 이벤트 라이프 사이클은?? 스프링 컨테이너 생성 ➡ 스프링 빈 생성 ➡ 의존관계 주입 ➡ 초기화 콜백 ➡ 빈 사용 ➡ 소멸전 콜백 ➡ 스프링 .. 2022. 1. 25. 이전 1 ··· 3 4 5 6 7 8 9 ··· 20 다음 반응형