20210306(토)
2021-03-06
1. 학습 날짜
2021-03-06
2. 학습 시간
10:00 ~ 13:00
3. 학습 범위 및 주제
백본 view, model, collection
루비온레일즈
4. 학습 목표
앞으로 정리할 것들에 대한 생각
5. 학습 정리
6. 상세 학습 내용
레일즈에 대해 조금 생각을 해봤다. 이번 과제를 진행하면서 백엔드를 레일즈를 이용했는데, 아직도 레일즈에 대한 이해가 부족해보인다.
서비스에서 실시간 채팅, appearance 뷰 등을 구현하기 위해서 액션 케이블이라는 기술을 이용했다.
액션케이블은 웹소켓이라는 프로토콜을 레일즈에서 사용할 수 있게 만들어준 도구다.
웹소켓의 등장 이전에는 http 만을 이용했었는데 이 http 통신은 단방향 통신 프로토콜이다. 단방향이라는 말이 조금은 어색하지만 쉽게 풀어 말하자면 클라이언트는 오직 받는 역할만하고 먼저 서버에 무언가를 할 수 없다는 것.
이 웹소켓의 등장으로 클라이언트가 브라우저단에서 먼저 서버에 무언가 데이터를 보낼 수 있게 된 것이다.
액션케이블을 이용하면 레일즈에서 이 웹소켓을 이용할 수 있다.
하지만 프론트와 백엔드간의 통신을 컨트롤하는것은 조금은 어렵다.
무엇보다 코드 자체가 너무 어렵고 헷갈리는 부분이 너무 많다.
프로젝트를 끝내기 전에 이 액션케이블에 대한 확실한 정리를 해야겠다 생각함.
액티브 스토리지
액티브 스토리지란 클라우드 서버에 파일을 올리고 관리하는데 도움을 주는 도구다.
물론 클라우드 서버에 올리지 않고 내 로컬에 올릴 수도 있다.
액티브 스토리지를 사용하는 법은 그렇게 어렵지는 않다.
프론트에서 이미지를 form-data 형식으로 전송해주면 백엔드에서는 이를 storage 에 저장한다.
그리고 프론트로 이미지를 전송해야할 때는 이제 이미지 그 자체를 전송해주는게 아니라 이미지의 url을 주는것이다.
이미지의 url 을 프론트에 준다고? 그렇다. 왜냐하면 우리의 이미지는 서버에 업로딩할 때 클라우드 서버에 올라간 것이므로 자신을 가리키는 고유한 주소인 url 을 갖고 있으므로 서버는 이제 프론트한테 이미지를 전송해줄 필요가 없고 그저 url 만 주면 브라우저가 알아서 클라우드 서버에서 이미지를 가져다 쓸 수 있게 되는 것.
액티브 잡
액티브 잡이란 특정 일(job) 을 선언하고 이 job 들을 백엔드에서 큐로써 관리하고 다루는 프레임워크다.
이 job 의 종류는 무엇이든 될 수 있다. 일정 시간마다 돌아가야 하는 작업, 특정 요청이 들어오면 이메일 같은걸 보내주는 역할 등...
엑티브 잡은 무엇이든간에 작게 쪼개질 수 있는 것이라면 작게 쪼개서 병렬로 사용할 수 있다.
즉 액티브 잡을 이용하면 서비스의 특정 시간, 특정 조건에 발생하게 할 수 있는 이벤트를 만들수있다는 것이다.
예를 들면, 특정 시간에 시작되는 토너먼트 그리고 토너먼트는 일정 시간마다 업데이트가 되어야하는데 이를 일일이 직접해줄수는 없는 노릇이다. 따라서 액티브 잡을 이용해서 자동으로 돌아가게 만드는 것.
액티브 잡은 액티브 잡만을 이용해서는 사용할 수 없다. 서드파티 앱들을 함께 사용해야만 하는데 이중 가장 유명한건 사이드킥이다.
아직 다룰줄모른다....
7. 오늘 학습 내용에 대한 개인적인 총평
오늘은 공부를 거의 하지 않았다.. 어정쩡하게 이거 알아보고 저거 알아보고 그랬던거같다.
과제의 거의 마지막에 왔다. 뭔가 마음이 편하지는 않다. 마무리 깔끔하게 하자.
8. 다음 학습 계획
war_request_create PR 마무리, guild_invitation 마무리
Last updated