Project

    Spring Boot에 Redis를 적용하여 인기 메뉴 순위 구현

    0. 목표 일주일간 인기 메뉴 순위 조회 기존 방식 순위 조회할 때마다 DB에 접근해서 순위 연산 JPA의 네이티브 쿼리 이용 목표 Redis로 캐싱하여 DB 접근 최소화 성능 향상 Redis란 키-값(Key-Value) 구조의 비정형 데이터를 저장 및 관리하며 빠른 처리하는 비관계형 DBMS 다양한 데이터 구조 지원 데이터베이스, 캐시, 메세지 브로커 등의 용도로 사용 Redis의 Sorted Sets을 사용하여 랭크 보드 구현 구조 설계 Redis Sorted Sets 구조 Spring 구조 Order 1. 최초 주문 시 DB에 저장 2. DB 저장 후 Redis에 Score 추가 PopularMenu 1. 인기 메뉴 조회 시 Redis 조회 2. 조회 데이터 반환 (3. Redis에 데이터가 없을 ..

    3. JAVA로 아주 간단한 WAS와 Spring MVC Framework 만들기

    WAS란 Socket과 HTTP 구현 Servlet Container & Spring Container 구현 Servlet 구현 MVC 구현 Servlet Container 구현 Servlet Container란 서블릿 컨테이너는 브라우저와 같은 클라이언트로부터 들어오는 요청을 받아서 서블릿을 동작시켜 주는 일을 맡는다. 서블릿은 웹 애플리케이션이 시작될 때 미리 만들어둔 웹 애플리케이션 컨텍스트에게 빈 오브젝트로 구성된 애플리케이션의 기동 역할을 해줄 빈을 요청해서 받아둔다. 그리고 미리 지정된 메소드를 호출함으로써 스프링 컨테이너가 DI 방식으로 구성해 둔 애플리케이션의 기능이 시작되는 것이다. RequestHandler 앞서 구현한 WebServer에서 RequestHandler 인스턴스를 생성하여..

    2. JAVA로 아주 간단한 WAS와 Spring MVC Framework 만들기

    WAS란 네트워크 연결 (with Socket) 구현 Servlet Container & Spring Container 구현 Servlet 구현 MVC 구현 구현 코드 GitHub - leelee31/was: WAS 구조와 Spring MVC 동작 학습용 프로젝트 WAS 구조와 Spring MVC 동작 학습용 프로젝트. Contribute to leelee31/was development by creating an account on GitHub. github.com 네트워크 연결 (with Socket) 구현 Web Application Server, 서버를 구현한다는 것은 무엇일까? '클라이언트/서버'는 컴퓨터 간의 관계를 역할로 구분하는 개념이다. 서버는 서비스를 제공하는 컴퓨터이고, 클라이언트는 ..

    1. JAVA로 아주 간단한 WAS와 Spring MVC Framework 만들기

    WAS란 네트워크 연결 (with Socket) 구현 Servlet Container & Spring Container 구현 Servlet 구현 MVC 구현 프로젝트 목적 WAS와 Spring MVC Framework는 자바를 배우고 나서부터 사용해 왔지만 대략적인 구조만 알고 있었다. 구조로 인한 에러를 여러 번 겪다 보니 언젠간 직접 구조를 만들면서 학습해 봐야겠다고 생각했다. 하지만 뭐부터 해야 할지 막막함이 커 시작하기까지 오랜 시간이 걸렸다. 이 학습 프로젝트가 누군가의 막막함을 해소하는 데 작게나마 도움이 되었으면 좋겠다. 구현 코드 GitHub - leelee31/was: WAS 구조와 Spring MVC 동작 학습용 프로젝트 WAS 구조와 Spring MVC 동작 학습용 프로젝트. Cont..

    커피 주문 서비스를 객체 지향으로 설계해보기 with Java

    프로젝트의 목적 지난 3년간 업무에서 접했던 코드들은 객체 지향과는 거리가 멀었다. Service단이나 DAO는 추상화가 되어있었지만 대부분의 데이터는 Map으로 관리해야 했다. 자바라는 언어에 관심을 갖게 된 계기가 '객체 지향'이었기 때문에 마음속엔 항상 아쉬움이 있었다. Map으로 데이터를 관리하는 건 어떨까? 예를 들어 customer에 name, address, phone number라는 속성이 있다고 하자. 컨트롤러는 화면으로부터 customer 정보가 담긴 Map 타입 파라미터를 받는다. 컨트롤러에서 customer가 가진 속성을 확인하려면 디버깅을 하거나 for문으로 Map 내부를 모두 print 해봐야 한다. 그뿐만이 아니다. 실수로 map.get("nmae")으로 오타를 내서 에러가 날..

    4. AWS + Spring Boot + React 프로젝트 근데 이제 배포 자동화를 곁들인

    0. 목표 및 구조 1. React & Spring Boot 2. AWS S3/EC2 3. 배포 자동화 - Github Actions & AWS CodeDeploy 4. 정리 4. 정리 나는 업무 내용을 확장해서 개발 공부를 하는 편이다. 뭔가.. 버프를 받는 느낌이기 때문이다. 근데 이번 프로젝트를 하고 나니 미지의 기술도 학습해야 할 필요성을 체감했다. 시작할 때 막막했던 만큼 완성하면 성취감이 크다 물어볼 동료가 없으니 혼자 공식 문서, 사이트 엄청 뒤져보고 이거저거 해봐야 함 일할 땐 혹시 문제 생길까봐 조심하던 부분도 막 다룰 수 있다 막 다루면서 배우는 게 있음 새로 알게 된 지식이 주는 자극 0. 목표 및 구조 1. React & Spring Boot 2. AWS S3/EC2 3. 배포 자동..

    3. AWS + Spring Boot + React 프로젝트 근데 이제 배포 자동화를 곁들인

    0. 목표 및 구조 1. React & Spring Boot 2. AWS S3/EC2 3. 배포 자동화 - Github Actions & AWS CodeDeploy 4. 정리 3. 배포 자동화 - Github Actions & AWS CodeDeploy AWS 공식 문서 한글화가 정말 잘되어있다. 웬만한 내용은 공식 문서에서 쉽게 찾아볼 수 있다. https://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/concepts.html Amazon EC2이란 무엇입니까? - Amazon Elastic Compute Cloud 이 페이지에 작업이 필요하다는 점을 알려 주셔서 감사합니다. 실망시켜 드려 죄송합니다. 잠깐 시간을 내어 설명서를 향상시킬 수 있는 방법에 대..

    2. AWS + Spring Boot + React 프로젝트 근데 이제 배포 자동화를 곁들인

    0. 목표 및 구조 1. React & Spring Boot 2. AWS S3/EC2 3. 배포 자동화 - Github Actions & AWS CodeDeploy 4. 정리 2. AWS S3/EC2 AWS 공식 문서 한글화가 정말 잘되어있다. 웬만한 내용은 공식 문서에서 쉽게 찾아볼 수 있다. https://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/concepts.html Amazon EC2이란 무엇입니까? - Amazon Elastic Compute Cloud 이 페이지에 작업이 필요하다는 점을 알려 주셔서 감사합니다. 실망시켜 드려 죄송합니다. 잠깐 시간을 내어 설명서를 향상시킬 수 있는 방법에 대해 말씀해 주십시오. docs.aws.amazon.co..