웹 프로젝트 (IBAS)

    [SpringBoot] 6. ManyToMany 를 "일대다/다대일"로 풀어서 사용하기 (+ 영속성 전이 문제)

    1. 배경 인가 시스템을 고민하면서, 수직적인 권한과 수평적인 권한을 분리했다. 수직적 권한 : (비회원->미승인회원->일반회원->회장단->회장->관리자) 수평적 권한 : 부서 (IT 부, 운영부, 총무, 홍보부 등) 수평적 권한을 처리하기 위해 Team 이라는 도메인을 추가하기로 했다. 지금 동아리 운영 상황을 보자면, 두 부서에서 동시에 활동하는 사람은 없지만 한 부서에서 다른 부서로 이동하는 경우, 중간에 임시로 동시 활동하는 경우 등이 있었고, 꼭 한 부서만 속해있으리라는 법은 없으니까. Member 와 Team 을 다대다 관계로 설정했다. 2. 다대다의 문제 jpa 에서 ManyToMany 관계를 지원하고 있어서, 해당 어노테이션을 사용해 풀어내면 정말 쉽다. 하지만 두 엔티티 사이의 관계가 그..

    [Django 웹프로젝트] 11. 인메모리 캐시 사용해도 될까? 심층분석

    [Django 웹프로젝트] 11. 인메모리 캐시 사용해도 될까? 심층분석

    [Django 웹프로젝트] 10. 호환성을 고려한 소셜로그인 버그 수정 (2022-03-14~15) (문제상황) - 소셜로그인을 통해서만 로그인이 가능하도록 구현되어있다. - OAuth2 인증 후 제공받는 사용자의 이메일 정보와, 회원가입 시 기재한 프로필 정보를 매핑해서 보관하고 있었다. - (로 letsmakemyselfprogrammer.tistory.com 위 작업 중, 소셜 계정 추가 연동 부분에서 보안처리를 변경할 때 했던 고민을 찾아봤다. 1. 상황 [기존 방식] - 단방향 md5 로 사용자id 를 암호화하여 넘김. => 복호화를 할 수 없으니 모든 사용자를 순회하면서 일치하는 확인했어야했다. [수정 방식] - key 를 이용하여 signature 를 생성하고 id 를 제외한 signatur..

    [Django 웹프로젝트] 10. 호환성을 고려한 소셜로그인 버그 수정  (2022-03-14~15)

    [Django 웹프로젝트] 10. 호환성을 고려한 소셜로그인 버그 수정 (2022-03-14~15)

    (문제상황) - 소셜로그인을 통해서만 로그인이 가능하도록 구현되어있다. - OAuth2 인증 후 제공받는 사용자의 이메일 정보와, 회원가입 시 기재한 프로필 정보를 매핑해서 보관하고 있었다. - (로그인 과정) OAuth2 로그인 시도 => 이메일 받아서 db 에 프로필 정보와 매핑되어 있는지 확인 => 로그인 처리 - 네이버는 OAuth2 를 통해 제공하는 이메일이 달라질 수 있다. => 연락처이메일이 달라져서 로그인이 안되는 경우 발생 - 또 처음부터 정보제공 동의를 하지 않더라도, 로그인이 진행되어 필수로 받아야하는 이메일 값이 넘어오지 않는 경우 발생 - 이슈 : https://github.com/InhaBas/Inhabas.com/issues/102 (해결방안) provider 와 uid 값으로..

    [Django 웹 프로젝트] 트래픽 및 방문자 수 (2022.02.11 ~ 2022.03.12)

    [Django 웹 프로젝트] 트래픽 및 방문자 수 (2022.02.11 ~ 2022.03.12)

    - 트래픽 한달간 총 9 만건의 요청 일 평균 3천건의 트래픽 점점 증가추세, 학교 내에서 입소문을 타기 시작한듯. 신입부원이 계속 늘어나고 있다. - 고유 방문자 수 한달 간 총 고유 방문자 1670명 30일 동안의 일일 고유 방문자 수는 총 2918 명 (77, 117,53,68,90,99,89,75,92,89,75,115,98,100,137,129,72,80,81,92,138,113,154,83,67,87,148,93,109,98) 하루 평균 고유 방문자 수는 약 97명 - 하루 평균 방문자 한명이 요청하는 평균 트래픽 건 수 = (하루 평균 트래픽) / (하루 평균 고유 방문자) = 약 3000 / 약 97 = 약 31 건 평균적으로 머무르는 시간은 5분이 채 안되는 것으로 추정되는 트래픽 숫자...

    [Django 웹 프로젝트] 9. 소셜 로그인 관련 오류 수정 (2022-03-13)

    [문제 상황1] (선조치 후분석) : 회원 A가 소셜로그인을 통해 회원가입을 진행했는데, 이메일만 None 으로 받아졌던 상황.(재현 실패) 입부 완료 메일을 보내지 못해서 서버 오류 로그가 나고 있었다. (대처) : 일단 빠르게 조치하기 위해 해당 회원의 이메일 값을 받아서 db 에 직접 넣어줬다. (분석) : 소셜로그인을 통해 받은 이메일 정보는 회원가입 중에 임의 수정할 수 없도록 설정해두었다. 그래서 회원 정보를 저장하는 중에 오류가 난 것으로는 보이지 않는다. 정보동의를 하지 않거나 이메일이 넘어오지 않으면 아예 회원가입을 할 수 없도록 해놨었기 때문에, 이메일이 없이 회원가입 페이지로 넘어가는 것도 이해가 잘 되지 않았다. - https://developers.naver.com/forum/po..

    [Django 웹 프로젝트] 8. 점진적으로 api 로 교체 가능? (2021-11-21)

    rest api 로의 전환 필요성 기존 Django 는 rest api 가 아니라, html 까지 렌더링하는 방식이다. 하지만 이 프로젝트는 크게 2가지의 문제상황을 마주하고 있다. 첫째로는 유지보수가 과연 가능할까? 라는 의문이다. 이전의 블로그 포스팅에서 정리되어있다. [Django 웹 프로젝트] 6. 유지 보수를 위한 새로운 아키텍처 고민 (2021-10-21) [Django 웹 프로젝트] 7. 유지 보수를 위한 새로운 인가인증 체계 고민 (2021-10-31) 두번째로 어플 제작을 기획 중에 있다는 점이다. 어플을 만들기 위해서는 hybrid app / web app / native 앱을 만들어야한다. 네이티브 앱 : SDK기반으로 개발된 애플리케이션. 모바일 플랫폼 API를 이용해 개발한다. 모..

    [Spring boot] 5. 멀티모듈? MSA? 좋은 아키텍쳐가 뭐야?!

    [Spring boot] 5. 멀티모듈? MSA? 좋은 아키텍쳐가 뭐야?!

    프로젝트 구조 변경을 고민하게 된 배경이 몇가지 있다. (1) layer 는 구분이 가지만, 파일이 많아져서 해당 layer 안의 특정 도메인을 한눈에 찾기가 어려워지고 있다. 또 그렇다보니 어떤 도메인 모델이 어떤 service 와 controller 로 이어지는지 알기도 힘들어질 것 같았다. 특히 새로운 개발자가 들어왔을때는 확실히 눈에 안보일 거 같았다. (2) 또 파일 업로드 및 다운로드를 동료 개발자가 맡아서 처리하고 있는데, 해당 기능은 완전히 독립적인 서비스로 빠져도 될 것 같다는 생각이 들었다. (원격 서버에 실제 파일을 업로드하고 다운로드 하게 해주는 파일 서버). 같은 모듈 내에 있는 것보다는, 적어도 다른 모듈로 독립적으로 구성할 필요가 있다. (3) 빅데이터 및 ML 동아리이기 때문..

    [서버 장애 (2022-01-11 21:20)] 갑자기 다른 TLS 인증서가 적용됐다?! 홈페이지 차단당함 ㅠ

    [서버 장애 (2022-01-11 21:20)] 갑자기 다른 TLS 인증서가 적용됐다?! 홈페이지 차단당함 ㅠ

    상황 : 07일 금요일 저녁, 홈페이지 도메인과 인증서 상의 도메인 불일치로 인해 브라우저에서 '신뢰할 수 없는 사이트'로 차단하는 현상 발생. : 인증서가 갑자기 *.inha.ac.kr 학교 인증서가 걸려버림. : 기존 서버는 학교 내부에 위치하고 있었음. 분석 IS 라우팅 오류로 교내 서브넷이 한꺼번에 묶였다? => CIDR 방식의 라우팅 테이블 특성 상 address aggregation 할 때 longest mask 가 우선하기 때문에, 해당 가정은 의미가 없다. => dns 라우팅 오류라기에는 *.inhabas.com 이 모두 잘 접속되었다. 다만 인증서만 기존 것이 아닌 학교 인증서가 걸렸다. nginx 까지는 접속이 잘 되는 상황. 로그를 확인해보니 ssl handshake connectio..