안녕하세요. IT 엘도라도 에 오신 것을 환영합니다.
글을 쓰는 것은 귀찮지만 다시 찾아보는 것은 더 귀찮습니다.
완전한 나만의 것으로 만들기 위해 지식을 차곡차곡 저장해 보아요.   포스팅 둘러보기 ▼

회사 프로젝트 작업 일지 (10)

[오픈갤러리] Next.js, Django REST Framework 환경 구축 (feat. 기술 스택 전환)

목차 ⦁ 구체적인 기술 스택 선택 (Next.js, Django REST Framework) ⦁ Next.js 프로젝트 생성 및 관련 패키지 설치 ⦁ Next.js 프로젝트 Docker 세팅 (로컬 환경) ⦁ Next.js 프로젝트 Docker 세팅 (배포 환경) ⦁ Django REST Framework 세팅 ⦁ 기존 인증 기능과의 호환성 확보 ▎구체적인 기술 스택 선택 (Next.js, Django REST Framework) 모든 준비가 완료되었으니, 이제 React로 기술 스택을 전환할 때다. 우리는 프론트 엔드 기술 스택으로 React를 선택하였다. 그 이유에 대해서는 이 포스팅에서 설명하였다. 그런데 React를 선택했다고 끝이 아니다. 순수한 React로 개발하면 검색 엔진 최적화(SEO)에..

[오픈갤러리] Docker 기반의 ECS 배포 환경 구축

기술 스택 전환을 위한 대대적인 Django 서버 정리 작업을 작년(2021년) 중반기까지 진행한 이후, 회사 차원에서 필요로 하는 대규모 기능들을 잇따라 개발하게 되면서 기술 스택 전환을 위한 작업은 다소 지연되었습니다. 이 포스팅은 해당 기능들의 개발이 완료되었던 작년 말에 진행한 서버 배포 라인 변경 작업에 관해 기술합니다. 목차 ⦁ 기존 설계에 대한 번복 (Docker 도입의 계기) ⦁ Docker 기반의 ECS 배포 환경 구축 ▎기존 설계에 대한 번복 (Docker 도입의 계기) Docker 기반의 ECS 배포 환경을 구축하게 된 계기를 설명하려면, 이 포스팅에서 기술 스택의 전환을 위해 설계했던 구조에 대한 번복이 먼저 필요할 것 같다. 여기서 설계했던 구조는 결과적으로 현재 구축한 ECS 배..

[오픈갤러리] Django 서버 정리 작업 ⑧ - 템플릿 블록 정리 (feat. django-compressor)

목차 ⦁ 내용이 비어 있는 블록 삭제 ⦁ 블록들의 개행 간격 통일 (+ 블록 내 인덴트 수정) ⦁ {% endblock %} {% block javascript_compress %}{% endblock %} {% block javascript_compress %} {% endblock %} {% block css_general %}{% endblock %} {% block css_general %} {% endblock %} {% block css_compress %}{% endblock %} {% block css_compress %} {% endblock %} 이와 같은 형태의 블록들을 탐색할 때는 정규식을 적극 활용하였다. ▎블록들의 개행 간격 통일 (+ 블록 내 인덴트 수정) 다음으로, 베이스 템..

[오픈갤러리] Django 서버 정리 작업 ⑦ - 사용자 로그인/회원가입 및 관리자 권한 제어 방식 정리 및 개선

목차 ⦁ 통일성을 갖추고, 읽을 수 없는 코드는 읽을 수 있게 ⦁ django-allauth 패키지의 구현 원리 파악 ⦁ 이메일 발송 코드 리팩토링 ⦁ 이메일 로그인/회원가입 관련 코드 정리 및 개선 ⦁ 소셜 로그인/회원가입 관련 코드 정리 및 개선 ⦁ 회원 정보 관련 각종 페이지 정리 및 개선 ⦁ 불필요한 정적(Static) 파일 제거 ⦁ 관리자 정보 조회 및 수정 기능 개선 처음 배울 때는 기본인 것처럼 배우지만 실제로 처음 회사에 들어가고 나면 1년이 넘도록 잘 알고 있지 못하는 경우가 많을 정도로 생각보다 꽤나 까다로운 부분이 있다. 그것은 바로 로그인, 회원가입과 관련한 인증 부분이다. 인증 관련 코드는 서비스에서 한 번 구축되고 나면 이후에 크게 고치거나 할 일이 별로 없기 때문에, 잘 이해하..

[오픈갤러리] Django 서버 정리 작업 ⑥ - 카카오 알림톡 및 네이버웍스 메시지 전송 API 정리

목차 ⦁ 시작하기 전에 큰 그림부터 그리기 (작업 범위 산정하기) ⦁ 알림톡 모델링 개선 ⦁ 알림톡 템플릿 딕셔너리 정의 ⦁ 알림톡 관련 뷰/템플릿 개선 ⦁ 알림톡 발송 코드 이관 (Lambda 함수 → 서버) ⦁ Lambda 함수 및 API 게이트웨이 리소스 삭제 ⦁ 네이버웍스 API 관련 키/토큰 값 정리 ⦁ 네이버웍스 API 관련 코드 정리 ⦁ 네이버웍스 메시지 봇/방 정리 ⦁ 네이버웍스 메시지 봇/방 목록 조회 페이지 개발 ⦁ 크론 작업 코드 정리 및 주석 작성 ⦁ 크론 작업 목록 조회 페이지 개발 오픈갤러리 프로젝트에서는 메시지 전송 관련 API를 크게 두 종류 사용하고 있다. 하나는 카카오 알림톡 API이고, 다른 하나는 네이버웍스 메시지 전송 API이다. 카카오 알림톡 API는 고객분들께 어..

[오픈갤러리] Django 서버 정리 작업 ⑤ - 자주 사용되는 코드 정리 (datetime, timezone 등)

목차 ⦁ datetime, timezone 코드 정리 ⦁ 문자열 formatting 방식 통일 ⦁ return render() 정리 ▎datetime, timezone 코드 정리 Python에서 날짜 및 시각을 표현하고 싶을 때는 보통 datetime 모듈을 사용한다. datetime 모듈에서는 date, time, datetime 등의 클래스가 제공되며 각각 날짜, 시각, 날짜 및 시각을 표현하는 데 사용된다. 또한 Django에서도 날짜 및 시각과 관련이 있는 timezone이라는 모듈을 제공한다. 오픈갤러리 프로젝트에서도 이러한 두 종류의 모듈(datetime, timezone)을 이용하여 날짜 및 시각과 관련된 코드들을 작성하고 있었다. 단, Django의 설정 중 USE_TZ 변수의 값이 Tru..

[오픈갤러리] Django 서버 정리 작업 ④ - 마이그레이션 파일 정리

목차 ⦁ 마이그레이션 파일은 매번 생성되는데... ⦁ 마이그레이션 파일이 많아지면? ⦁ 마이그레이션 관련 명령어 (showmigrations, migrate --fake) ⦁ Step ① 실서버 배포 전 로컬에서 미리 진행해야 하는 작업 ⦁ Step ② 실서버 배포 시 진행해야 하는 작업 ▎마이그레이션 파일은 매번 생성되는데... 데이터베이스의 마이그레이션 파일은 모델에 변동 사항이 생길 때마다 생성된다. 물론 한 작업 내에서 여러 개의 변동 사항이 생기는 거라면 그것들을 전부 하나의 마이그레이션 파일에 포함시킬 수 있다. 그러나 이미 배포가 된, 지난 작업에서 생긴 변동 사항을 이번 작업에서 새로 생길 변동 사항과 묶는 것은 허용되지 않는다. 다시 말해서, 이미 데이터베이스에 적용된 마이그레이션 파일을..

[오픈갤러리] Django 서버 정리 작업 ③ - 불필요한 파일/코드 삭제 및 코드 순서 정리

목차 ⦁ 프로젝트 폴더 내 불필요한 파일 및 코드 삭제 ⦁ 모델 클래스 내 코드 순서 정리 ⦁ 모델 내 불필요한 필드 삭제 ⦁ URL 및 뷰 순서 정리 ▎프로젝트 폴더 내 불필요한 파일 및 코드 삭제 오픈갤러리는 지금까지 빠른 개발에 집중을 해왔다. 즉, 당장 필요한 기능의 '추가'에만 초점이 맞춰지고 기존 기능의 '삭제'에는 큰 정성을 들이지 못했다는 것이다. 이로 인해 더 이상은 사용되지 않는 불필요한 파일이나 코드들이 그때그때 제대로 지워지지 못한 채 오랜 시간 축적되어 왔다. 그래서 이제는 그러한 파일과 코드들을 찾아 지워줄 때가 되었다고 생각하였다. 다른 무거운 정리 작업들을 진행하기에 앞서, 먼저 프로젝트를 가볍게 만드는 게 우월 전략이라고 판단한 것이다. 일반적으로, 특정 기능을 삭제할 때는..

[오픈갤러리] Django 서버 정리 작업 ② - 서버 구조 개편 및 개발 환경 구축 방법 검토

▎서론 본격적인 서버 정리 작업에 들어가기 전에, React와 Django의 조합으로 기술 스택을 바꾸려면 서버의 구조를 어떻게 개편하고 개발 환경은 또 어떤 식으로 구축할지 등에 대해 미리 한 번 간략하게나마 검토해보기로 하였다. 하지만 예상대로 쉬운 일은 아니었다. 우선 검토 과정에서 고려해야 할 점은 다음과 같이 크게 두 가지였다. 이에 관한 논의 내용은 아래에서 자세히 다루겠다. 기존의 서비스는 프론트 엔드와 백 엔드가 분리된 구조가 아니었다. 한 번에 기술 스택을 전부 바꾸는 게 아니라, 점진적으로 새로운 기술 스택을 도입해야 했다. ▎서버 구조부터 바꿔야 기존의 서비스가 이미 프론트 엔드와 백 엔드가 분리된 구조였고, 프론트 엔드의 기술 스택으로 Vue를 쓰고 있는 상황이었다고 가정해보자. 이..

[오픈갤러리] Django 서버 정리 작업 ① - 배경 및 진행 이유

오픈갤러리라는 회사에서 약 6개월 동안(2021.02 ~ 2021.07) 대대적인 Django 서버 정리 작업을 리드하며 진행했던 주요 작업들을 일지 형태로 기록한 포스팅입니다. 장기간 공을 들여 진행했던 작업이니만큼 아카이빙을 해둬야겠다고 생각하였습니다. ▎이제는 바꿔야 할 때 나는 현재 오픈갤러리라는 IT 회사에서 Django 풀 스택 개발자로 일하고 있다. 2019년에 입사하여 줄곧 Django를 공부해왔고, 2020년 중반기쯤부터는 개인적으로 React를 비롯한 각종 프론트 엔드 공부를 집중적으로 시작하였다. 그런데 프론트 엔드를 공부하며 그 당시에 뼈저리게 느꼈던 부분 중 하나는, 회사가 기술 스택으로 채택하고 있던 Django 풀 스택이 최근 트렌드에 잘 어울리지 않는 듯하다는 것이었다. 프론..