처음엔 AWS 배포와 리눅스 배포의 차이점을 잘 몰랐는데, 이번 기회에 공부할 수 있었다. AWS 배포는 리눅스 배포를 클라우드에서 하는 것이다.로컬 리눅스 서버로 하면 Ubuntu를 설치하고 직접 서버를 관리하며, 보통 IP가 고정이 아니고 외부에서 접근하기 어렵다는 특징이 있다. 그래서 AWS(Amazon Web Service)를 이용하여 배포하면 실제 서비스처럼 다른 사람도 쉽게 이용할 수 있다.서버를 인터넷에 공개하므로 IP가 제공되며, 대신 보안 설정이 필요하다. (포트 등)AWS EC2 (리눅스 서버)→ Java 설치→ DB 설치 or RDS→ jar 실행→ 다른 사람도 접속 가능 또한 AWS는 비용 때문에 걱정했는데, 다행히 6개월 동안 프리티어로 이용할 수 있는 것 같아 바로 실행하기로 ..
🌟Project
처음 설계한 내용에 따라 프론트엔드를 작성하자면, 구조는 다음과 같이 된다. src/main/resources/static/ ├── index.html ← 로그인 / 회원가입 ├── main.html ← 메인 (캘린더) ├── diary.html ← 날짜별 일기 목록 ├── write.html ← 글 작성 / 수정 ├── detail.html ← 상세 조회 ├── css/ │ └── style.css ← 공통 스타일 └── js/ ├── api.js ← fetch 공통 모듈 (API 연동 교체 포인트) ├── index.js ├── main.js ├── diary.js ├── writ..
테스트 전략은 다음과 같다. 단위 테스트 (Unit Test) └── Service 테스트 - 외부 의존성(DB, 네트워크)을 Mockito로 가짜 객체로 대체 - 비즈니스 로직만 빠르게 검증 슬라이스 테스트 (Slice Test) └── Controller 테스트 (@WebMvcTest) - 실제 HTTP 요청/응답 형태로 검증 - Service는 Mock으로 대체 통합 테스트 (Integration Test) └── Repository 테스트 (@DataJpaTest) - 실제 DB(인메모리 H2)로 JPA 쿼리 검증본 프로젝트에서 실제 DB는 MariaDB를 사용하지만, 테스트 때는 간단하고 빠르게 적용하기 위해서..
이번 프로젝트의 핵심 중 하나인 인증/인가 구현하기!우선 간단하게 핵심만 정리하자면 다음과 같다. 인증(Authentication)누구인지 (로그인) 인가 (Authorization)권한 있는지 (특정 페이지에 들어갈 수 있는지) JWTJWT는 STATELESS 방식으로 동작하여 서버가 세션 상태를 저장하지 않는다.세션 방식은 로그인 상태를 메모리에 저장하지만, JWT는 토큰 자체에 정보가 담겨 있어 서버는 아무것도 저장하지 않아도 된다. 따라서 서버를 여러 대로 늘려도(스케일 아웃) 인증이 끊기지 않는 장점이 있다. Spring Security필터 체인 구조로 이루어져 있다.SecurityContext에 인증 정보를 저장하여 추후에 필요할 때마다 꺼내서 사용하는 방식으로 한다. 전체 흐름 내용은 아래와..
이번 단계는 본격적으로 계층 별로 코드 작성하기!아래 표대로 domain, repository, service, controller부터 구현한다. 1. Domain그 전 글에서 데이터베이스 설계한 대로 Domain 패키지 안에서 엔티티 코드를 작성한다. JPA를 사용하기 때문에 애노테이션만 달아주면 JPA가 자동으로 객체와 실제 데이터베이스 테이블을 연결시켜 준다.덕분에 개발자는 쿼리를 따로 작성하지 않고 객체 중심 개발을 할 수 있다. (ORM 기술) User.javapackage toyProj.myDiary.domain;import ...@Entity //jpa 켜야 사용 가능@Table(name = "users")@EntityListeners(AuditingEntityListener.class)@G..
우선 코드 작성하기 전에 개발 목적과 화면 설계부터 정리하고 시작! 1. 개발 목적게시판 형식의 일기 기록 웹 사이트를 만들어서 직접 사용한다.로그인, 회원가입 기능을 만들고 인증/인가 구현 방법에 대해 자세히 학습한다. (Spring Security, JWT 등)RESTful API를 설계하고 구현한다.데이터베이스를 설계하고 구현한다.테스트 코드를 작성해 본다.최종적으로 AWS등을 이용해 서버를 배포하는 방법을 학습한다.그동안 여러 개인 프로젝트 / 팀 프로젝트를 하면서 AI나 지도 등 외부 API 연동하는 방법, 기본적인 REST API와 데이터베이스 설계 및 구현 방법은 익혔지만, 인증/인가에 대해서는 정확히 구현해 본 적이 없다.그냥 프론트엔드에서 로컬 스토리지로 저장해서 로그인 유지하는 것처럼..
정말 오랜만에 쓰는데... 그동안 졸작했다가 며칠전에는 정처기 필기 봤다가... 이제 남은 시간동안 뭐할까 고민하다가 개인 프로젝트 더 하기로 함 ㅎㅎ아무튼 바로 시작!! 01. 구상1. 집에 무슨 약이 있고 소비기한 얼마 남았는지 몰라서 맨날 찾아봐야 됨 -> 약 관리 기능 (CRUD 구성)2. 증상이 나타날 때 집에 있는 약 중에서 무얼 어떻게 복용해야 하는지, 그 외에 필요한 약이나 영양제, 병원 등이 무엇이 있는지, 증상의 원인이나 치료법 등이 궁금함 -> 현재 저장된 약 DB + AI LLM 모델 연결해서 자동 진단 추천 기능3. 현재 위치 근처에 어떤 병원들이 있는지 -> 카카오 지도 API 연결해서 마커, 이름, 전화번호 표시 위 3가지 기능들을 구현할 것이다. 따라서 페이지도 아래처럼 ..
이번에 매칭 웹을 만들면서 깃허브로 단순 백업이 아니라 진짜 프로젝트를 진행하는 방식대로 처음 도전해 봤다. 그래서 아직 익숙하진 않지만 몇 가지 주요 기능들을 정리해 볼 겸 쓰는 중... 인텔리제이를 이용하면, 웬만한 기능들은 상단바 탭에서 사용할 수 있다.먼저 현재 내 프로젝트와 깃허브를 연동시켜준다. 그럼 상단바에 Git 탭이 생기면서 여기서 commit, push 등을 할 수 있다. 깃허브로 해당 프로젝트 레포지토리에 들어가서 Project를 선택하면 할 일 목록을 정리할 수 있다. New project -> Board 형식으로 생성하는 것이 보기 편한 것 같아 그걸로 선택하였다. 지금은 다 끝난 상태인데, 작업할 때는 Todo에서 Add item을 통해 구현할 기능 이름으로 생성하였다. ..
보호되어 있는 글입니다.
~완성화면 미리보기~ 일기 생성 기능 개발01. 구상25.01.14지도기능으로 산책 경로까지 추가하니까... 뭔가 하루에 있었던 일을 요약할 겸 일기가 자동으로 생성됐으면 좋겠다는 생각이 들었다. 그래서 이번에는 gpt등 NLP 모델을 이용해서 체크리스트 완료 여부, 이동했던 위치를 받으면 NLP가 그에 맞게 일기를 생성해 주는 걸 도전해 보기로 했다! 02. Hugging Face 모델 키 발급간단한 토이 프로젝트니까 무료 모델을 쓰려고 했는데, 찾아보니 아래 사이트에서 모델들을 고를 수 있다길래 여기로 회원가입을 해서 키를 발급받았다. Hugging Face – The AI community building the future. huggingface.co setting -> Access Toke..