기술 스택

내가 이해한대로 각 부분의 역할을 설명하겠다. 아직 실제 개발을 해보지 않았기 때문에 지식이 얕거나 틀릴 수도 있다.

Client

Flutter

우리가 교육받은 내용이자, 사용자 클라이언트를 개발하는 데 사용할 프레임워크다. 언어는 다트를 사용한다. 크로스플랫폼을 지원하기 때문에 한 번만 개발해도 안드로이드와 iOS에서 둘 다 동작하며 웹 브라우저에서까지 동작한다. 다른 크로스플랫폼 프레임워크로는 React Native가 있고, 네이티브 쪽은 Kotlin, Swift 등이 있다.

Firebase

Firebase는 데이터베이스, 인증, 파일 저장 등의 코드가 대부분의 프로젝트에서 유사하다는 점에서 착안한 서비스다. 어차피 비슷하니까 개발자가 매번 만들 필요 없이 Firebase에서 대신 만들어준다는 거다!
더 자세히 찾아보니 Spring Boot나 MySQL에서 하는 일을 대체할 수 있을 거 같은데, 뭐하러 Firebase를 냅두고 딴 걸 쓰는 걸까? 플러터를 교육해주신 강사님께 여쭤봤다. kakao_screenshot1722928628599
짧게 요약하자면, Firebase를 쓰면 편하지만 제약사항도 생기기에 현업에서는 잘 쓰지 않는다는 거다. 우리 프로젝트에선 인증 부분만 Firebase를 쓰고 다른 부분에선 쓰지 않기로 했다.

RestAPI

클라이언트의 요청을 서버에 전달하고, 서버의 답을 다시 클라이언트에 전달하는 다리다. 여러가지 형식이 가능하지만 그 중 가장 대중적인 게 RestAPI란 형식이다. 어디서 가져오면 되는 게 아니라 우리가 구현해야 한다!


Server

Amazon EC2

Amazon AWS 서비스 중 하나다. 컴퓨터 하나를 빌린다고 생각하면 되는데, 성능이나 용량을 필요한만큼 설정할 수 있는 컴퓨터다. 보통 여기서 서버를 구동시켜 사용자 요청을 처리한다. 개인의 컴퓨터에서도 가동할 수 있으나 여기서 하면 24시간 켜둘 수 있어 좋고, 문제가 발생하면 처리하기도 좋다.
물론 컴퓨터 하나를 빌린다고 생각하면 되는 만큼 다른 걸 해도 된다. 여기서 MySQL을 깔아서 데이터베이스로 쓸 수도 있다.

Amazon RDS

Amazon AWS 서비스 중 하나다. 관계형 데이터베이스를 관리해준다. 클라우드 안에 관계형 데이터베이스를 넣게 해준다고 생각하면 될듯하다. MySQL을 여기다가 넣는 게 일반적이다. 각종 관리도 Amazon AWS가 해준다고 하고, 이게 EC2 대신 RDS에 데이터베이스를 넣는 게 좋은 이유다. 물론 관리도 잘 하고 설정을 직접 할 필요가 있다면 EC2을 사용하는 게 좋겠다.

Spring Boot

Restful한 API를 구현하는데 유리한 프레임워크다. Java에서 반복적으로 쳐야하는 부분을 줄인 게 Spring, 거기서 더 덜어낸 게 Spring Boot다. 이걸로 API 구현과 데이터베이스에서 받은 데이터를 처리하는 로직이 필요하다면 그걸 구현하면 된다. 그리고 EC2에서 계속 실행시켜두면 클라이언트의 요청을 처리할 수 있다.

Amazon VPC

Amazon AWS 서비스들은 서로 네트워크로 연결되어 있어야 한다. 그걸 위해 사용하는 가상 네트워크다. 사용자가 직접 설정할 수도 있으나 EC2나 RDS 사용시 아마존에서 기본적으로 제공한다고 한다.

댓글남기기