- 채팅 DB를 MySQL에서 MongoDB로 변경
서버리스 어플리케이션
특징
- 서버리스 컴퓨팅은 개발자가 서버를 관리할 필요 없이 애플리케이션을 실행할 수 있는 컴퓨팅 모델
- 전통적인 서버 기반의 아키텍처에서는 애플리케이션을 실행하기 위해 개발자가 직접 서버를 프로비저닝하고 관리해야 했다.
- 하지만 서버리스에서는 이러한 서버 관리 작업을 클라우드 제공 업체가 대신 처리한다.
장점
- 확장성
- 서버리스 애플리케이션은 필요에 따라 자동으로 확장됨
- 사용량이 증가하면 클라우드 제공 업체가 자동으로 추가 리소스를 할당하여 응답
- 요금 청구 방식
- 사용한 만큼만 비용을 지불하므로 비용이 효율적
- 사용하지 않는 시간에는 서버가 비활성화되므로 리소스를 낭비하지 않는다
- 운영 부담 감소
- 서버 관리에 대한 부담이 줄어든다
- 개발자는 코드 작성에만 집중하면 되므로 운영 작업을 최소화할 수 있다
MongoDB Atlas 사용법
Spring Boot 애플리케이션에서 MongoDB Atlas 사용하기:
- 의존성 추가
🔽 build.gradle
//mongodb
implementation 'org.springframework.boot:spring-boot-starter-data-mongodb'
implementation 'org.mongodb:mongodb-driver-sync:4.11.1'
2. application.properties 설정
<username>, <password>, <cluster>, <database> 정보 입력
🔽 application.properties
spring.data.mongodb.uri=mongodb+srv://<username>:<password>@<cluster>/<database>?retryWrites=true&w=majority
3. Spring Data MongoDB Repository 생성
🔽 ChatRepository.java
import org.springframework.data.mongodb.repository.MongoRepository;
public interface ChatRepository extends MongoRepository<Chat, Long> {
//쿼리 메서드
}
4. 엔티티 클래스 생성
MongoDB 컬렉션과 매핑되는 엔티티 클래스를 생성
mongodb는 @Dcoument어노테이션을 사용
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;
@Document(collection = "chats")
public class Chat {
@Id
private ObjectId id;//chat 아이디
private Long roomId;//채팅방
private Long senderId;//chat을 보낸 사람
private Long receiverId;//chat을 받는 사람
private String content;//채팅 내용
private LocalDateTime createdAt;
}
Whitelist 추가
Whitelist에 IP를 추가하여 접근할 수 있도록 설정하여,
등록된 IP 주소만이 MongoDB Atlas 클러스터에 액세스하고,
외부 접속은 차단하여 시스템 안정성을 높일 수 있다.
MongoDB Atlas에 Whitelist 추가하기:
- MongoDB Atlas 대시보드에 로그인
- 해당 클러스터를 선택하고 "Network Access" 섹션으로 이동
- "Add IP Address"를 클릭하여 허용할 IP 주소를 추가
- "Confirm"을 클릭하여 변경 사항을 저장
'Spring' 카테고리의 다른 글
[TIL] 240510 Spring S3 bucket에 사진 추가 | SpringBoot MultipartFile로 이미지 추가하기 (0) | 2024.05.10 |
---|---|
[TIL] 240418 Spring Data JPA 페이징 및 정렬 | Pageable, PageableDefault (2) | 2024.04.18 |
[TIL] 240412 즉시로딩, 지연로딩, 영속성 전이, OrphanRemoval (0) | 2024.04.12 |
[TIL] 240409 Entity 연간 관계 | 1:1 매핑, 단방향, 양방향 (0) | 2024.04.09 |
[TIL] 240408 RestTemplate | NaverOpenApi 검색 (0) | 2024.04.08 |