SPRING BOOT + FIREBASE (DATABASE, FUNCTIONS, AUTH) + NEO4J 를 사용 한 프로젝트.
포인트는 FIREBASE FUNCTIONS를 사용하여 함수를 서비스로 마들고 그걸 권한에 맞게 스프링과 플러터에서 사용하는 것인데 쉽게 될지 의문이다. 펑션스도 한 번도 사용을 안 해본 지라 항상 시행착오가 따르더라.
내가 해보고 싶은 건 또 주변에 관심 있는 사람이 없고 관심사가 남들과 다른 거 같다 ㅠㅠ 이게 생각한 대로 기대한 대로 한방에 뿅 다 되었으면 좋겠다!
스프링 프레임웍과 향후 플러터를 활용한 크로스플랫폼 프로젝트를 시작하려 한다.
리액트를 사용하면 좀 더 개발 공수가 줄 거 같은데 사용할 줄 몰라서 일단은 스프링기반으로 해보고 못해 먹겠으면 리액트도 공부할 겸 그쪽으로 넘어가려 한다.
막상 시작하려 해도 또 고민인 게 스프링 프레임웍도 결이 또 나뉜다 서블릿 스택과 리액티브 스택으로
서블릿은 기존부터 쭉 사용되던 방식이고 리액티브 스택은 비동기 논블럭킹 방식을 사용할 수 있다.
리액티브 스택의 장점이라면 동시에 크고 작은 많은 요청이 있을 때 보다 더 효율적으로 작동하겠지.
1. 새로 시작하는 만큼 최신 버전들을 다운로드한다.
자바 계열이니 자바부터 받을 건데 전 보통 JDK 받아서 개발툴에서 세팅해 주는 방식을 사용합니다.
'spring.io' 프레임웍 공홈에 가면 퀵스타트 페이지가 있는데 이곳에 보통 자바 다운로드하는 곳이 있었던 거 같다.
때에 따라 다른데 예전엔 오라클 한때는 오픈 JDK 지금은 bellsoft liberica JDK가 자리 잡고 있다.
jdk도 만드는 데에 따라 살짝 차이는 있는데 그 개별적인 차이를 다 비교할 수는 없으니 적당한 jdk를 선택해서 설정한다.
따로 jdk 세팅은 안 해주고 다운로드 후 IDE에서 경로만 지정해 주면 개발하는데 지장이 없다.
현재는 17 버전을 추천하고 있다.
https://bell-sw.com/pages/downloads/#/java-17-lts
JDK8를 추천하는 거 같으나 전 최신버전을 좋아하므로 19를 선택하려 하다가
그래도 Long terms support가 붙은 최신 버전 17을
그간 JDK를 차곡차곡 잘 모아놨네요
JAVA의 JDK의 장점이라면 하위 호환이 잘된다는 거지요 상위 버전의 JDK를 사용하면 하위버전 설정해서 컴파일할 때 이상 없어요. 그렇지만 서버의 버전과 맞춰서 개발한다는 혹시 모르는 일이 있을까 봐.
2. ide를 켜고 새로운 프로젝트를 만듭니다.
나름 1년을 함께 해온 Jetbrains의 intellij idea 포맷 없이 1년간 함께 했네요 버전을 보니
전 빈프로젝트를 만든 후 그 안에 모듈을 추가하는 방식을 선호합니다.
프로젝트 명은 jdk 버전으로 해서 해당 프로젝트 버전에 맞는 모듈들을 모아 놓습니다.
이 개발툴에선 처음부터 git저장소를 생성할 수 있네요 단일 모듈이면 git 저장소 생성해서 이력을 처음부터 관리하면 좋겠네요. 전 모듈마다 저장소를 다르게 할 거라 패스합니다.
환영 인사와 함께 빈프로젝트 생성됨.
Test Management Plugin 기능을 사용할 수 있습니다. 나중에 시간 되면 배워서 TDD를 멋지게 하고 싶네요.
새 모듈을 생성하려다 보니 Spring Initializr이 보여 선택 후 경로 등을 지정해 줍니다.
위처럼 모듈 생성 때 스프링 기본 라이브러리들을 세팅해도 되고
스프링 공홈에서 이니셜라이저를 이용해 다운 후 모듈을 불러오기 해도 됩니다.
한때는 gradle로 했으나 어차피 그루비나 코틀린 둘 다 잘 몰라서
maven으로 하는 게 가독성도 좋고 젤 심플한 거 같다.
IDE든 프레임웍이든 새 버전마다 다 조금씩 다 다르다
새로운 거 쓸 때마다 어떤 걸 선택해야 할지 헷갈린다.
뭔가를 선택하면 뭔가를 세팅해 줘야 하고 그래서 최소한으로 선택하고 사용하거나
이전 저번을 사용하는데 새로운 거에 적응하려면 새 버전을 그러나 주변엔 다들 쓰던 것만 쓴다
새로운 문제를 맞이하기 싫어서.
이 부분이 젤 크고 고민된다
리액트로 가느냐 서블릿으로 가느냐
리액트로 갔을 때 사용 안 되는 것도 있을 텐데 그런 건 체크를 안 해 주는 거 같다.
Spring for GraphQL이 눈에 들어와 좋아했으나 제가 원하는 그게 아니네요.
neo4j랑은 상관없는 다른 라이브러리인 듯.
Security에는 Okata도 보이는데 로그인 페이지를 제공해 주는 거 같은데 안 써봐도 모르겠네요. 쓰면 편해지려나
요번엔 firebase로 oauth를 사용해 볼 예정이라 oauth2와 시큐리티 okata를 해보겠습니다.
sql류도 선택지가 많네요 flyway도 사용해 보고 싶은데 일단 noSql의 neo4j도 추가해 주고
참조 문서도 가서 찾아보지만 reactive에 대한 내용은 보이지 않아 리액티브 스택을 쓰는 것이 의미가 있나 싶네요
좀 더 생각해 보고 진행해 보아야겠습니다
오늘은 여기까지 고민해 보고 다시 해야겠네요.
'개발 > 스프링 FIreBase Neo4j' 카테고리의 다른 글
SPRING BOOT SECURITY 설정 (0) | 2023.01.22 |
---|---|
Neo4j 설치 후 비밀번호 변경 (feat cypher) (6) | 2023.01.22 |
Neo4j Desktop 설치, 스프링 프로파일 속성 (0) | 2023.01.22 |
SPRING INITIALZR 생성 후 PROFILES 설정 방법 feat Okata (0) | 2023.01.21 |
IntelliJ Spring initializr 설정 방법 (1) | 2023.01.21 |