넥스터즈 활동이 시작 되었다. 여러 기수 회원들이 참가한 이번 시즌에는 좋은 아이디어들이 많이 나왔다. 아이디어가 선정이 된 회원들은 (대략 10개정도) 발표를 하고 팀 모집을 시작했다. 모바일, 웹, 게임 등 다양한 프로젝트 아이디어들이 나왔다. 발표를 쭉 들어보고 원하는 팀에 가서 상담(?)을 받는 형식이었다.
내가 중요하게 생각한 부분은 스택과 아이디어 였다. 아이디어들은 다들 너무 좋았기 때문에 하고 싶은것이 몇 개 있긴했지만 그 중 제일 재밌어보이고 현실성 있는 아이디어가 있는 팀으로 갔다. 게다가 내 스택과 맞는 팀이었다. 현재 내가 새로운 언어를 공부하면서 진행하기에는 무리가 있기 때문이다. 프로젝트 기간이 2달이기 때문에 1주차부터 바로 개발에 투입되어야 해서 처음부터 배우면서 한다는 것은 일단 말이 안된다. 어쨌든 들어가고 싶은 팀에 들어가서 너무 기뻤다. pm님을 비롯한 모든 팀원들도 다 좋았다.
우리팀은 일단 서버 3, 프런트 2, 디자인 3 이렇게 꾸려졌다. (총 8명) 나는 서버에 속했다. 스택은 Spring Boot로 맞춰 졌고 리눅스 서버를 사용한다고 하였다. 아참 우리 팀의 아이디어는 Url 단축 서비스이다.
Url이 단축되는 것은 여러 커뮤니티에서 공유할 때 굉장히 유용한 기능이라고 할 수 있다. 예를들어 트위터의 글자수 제한에 링크가 걸려 글을 다 쓰지 못하는 경우, 무조건 url을 단축 시켜야 한다. 하지만, 기존의 단축 서비스들이 존재한다. 물론 그쪽에 대적하지 못하겠지만 일단은 몇 가지 장점이 있다.
첫 번째로 동아리의 홍보이다. 줄여진 url의 메인 도메인이 동아리 도메인이기 때문에 동아리를 홍보할 수 있다. 마케팅의 이점이다.
두 번째로 해싱 알고리즘을 사용한 프로젝트를 해볼 수 있다는 점이다. 게다가 아주 기본적이면서 중요한 내용들을 다룰 수 있게 될 것 같다.
세 번째로 뭐가 됐든 서비스를 운용할 좋은 경험이라는 것이다. 어쨌든 동아리를 홍보하고 링크도 줄여주는 좋은 프로젝트이기 때문에 완성된다면 존속 여부는 확실하다.
초기에는 서버 1대로 구상하기로 했다. 실제 서비스가 구동되면 여러 대로 늘려야 한다. 일단은 한대로 한다면 동시성 문제는 생각하지 않아도 되지만 추후 고려해야할 대상 1순위다.
Url의 단축은 여러 알고리즘을 생각해 보았다. 보안 알고리즘 관련 글은 여기를 참고하자. http://pjh3749.tistory.com/222?category=761512
문제 해결 하는 과정 자체가 알고리즘이다. 접근을 할 때 문자열을 줄이려는 알고리즘을 써야해! 그럼 이걸 쓰자! 라고 접근하기 보다는 나는 문제 상황을 먼저 정의하고 그 문제를 해결하기 위한 방법을 고민하는게 우선으로 생각한다.
일단 당면한 문제는 이렇다. Url을 단축 시켜야 한다. 단축 시키면 길이가 줄어 들어야 한다.
1) 마구잡이로 줄인다. -> 그냥 짜른다. 탈락. url 충돌 가능성이 매우 높다.
2) 해시 함수를 쓴다. 해시 함수는 긴 입력값을 적절히 처리하여 짧게 만드는 함수이다. 그리고 단방향 암호화이기 때문에 원래 텍스트를 복원하지 못한다. 일단은 적절해 보인다. 관건은 충돌 가능성이다.
3) 암호화 (양방향). 굳이 양방향 암호화를 쓸 필요없다. 줄여준 url에서 원래의 url을 복호화 할 필요가 없다. 서로 매핑만 되면 되는 값이기 때문에 복잡하게 암호화 복호화가 필요없다. 게다가 무엇을 암호화했는지 중요하지 않다. 즉, 줄여주는 부분은 보안이 필요없다. 탈락.
이로써 두 번째 방법이 적합해 보인다. 그 다음 문제를 생각해보자. 이것이 바로 divide and conquer!
MD5
SHA
진법 인코딩
Database 채번
랜덤 번호 생성
'프로그래밍 > 넥스터즈' 카테고리의 다른 글
[넥스터즈] 서버 개발 일지 - Nginx 적용기, Nginx 정규식 적용과 기타 주요 내용 (2) | 2019.03.15 |
---|---|
[Nexters]넥스터즈 (URL 단축팀) 활동 - 서버간 통신 gRPC 적용기 (1) | 2019.03.10 |
[Nexters] 넥스터즈 (URL 단축팀) 정기활동 1주차 기록 - URL 단축 알고리즘 구현 및 코드 리팩토링 (2) | 2019.02.24 |
[넥스터즈] 넥스터즈(Nexters) 지원 동기 및 면접 후기 (4) | 2019.01.09 |