Q&A 큐레이션
장고로 프로젝트를 진행하고 있습니다. 기존 자바로 짜여진 구조를 리팩토링 하는 차원으로 파이썬과 장고로 만들어보고 있는데요 인터넷에 있는 많은 장고 튜토리얼, 게시판 문서들은 model 에서 id를 사용하고 fk를 적극적으로 사용해 orm을 무조건 사용하더라구요 하지만 실제 서비스 운영 배포되고 있는 서비스도 이런 구조로 사용하는지, 혹은 직접 쿼리를 날리거나 fk를 사용하지 않는지 등 참고할 만한 내용을 공유해주시면 감사하겠습니다. 덧붙여 모델을 만들어 db로 마이그래이션 하는게 당연(?)한건지 아무도 그렇게 안쓰고 db먼저 만들고 모델 생성하시는지 그런 것도 궁금합니다. 저는 후자가 맞는것 같은데 자료는 전자가 많아서... 입문용 자료라 그런건지..
답변
장고는 튜토리얼만 잘 따라하셔도 큰 문제없이 서비스를 운영할 수 있습니다. 질문에 답변을 드리자면 1. ORM을 활용하는 것이 일반적입니다. 장고에서 raw query를 작성할 수 있는 기능이 있지만 개인적인 경험상 사용할 일이 없었습니다. 저와 다른 경험을 하신 분들이 답변을 주시면 좋겠네요. 2. Foreign Key의 사용은 장고에서 쓰는 기능이 아니라 RDBMS를 효율적으로 사용하는 방법입니다. 관계형 데이터베이스에 대해 조금 더 학습하시면 이해할 수 있으실 거라고 생각합니다. 3. 장고 뿐만 아니라 서버 프레임워크는 프레임워크의 언어로 model이나 entity를 작성하고 해당 사항을 데이터베이스로 migration 합니다. 데이터베이스에 테이블을 먼저 생성하고 장고의 model을 작성하신 후 migration을 시도하시면 에러가 날거에요. 그 에러를 피하려고 Migration을 시도하지 않는다면 ORM을 사용할 수 없을 것입니다.
제가 얼마전 백엔드 분야에 관심이 생기기 시작해서 혼자서 시작해보려고 하는데 프레임워크를 어떤 것을 해야 할 지 고민중입니다. 스프링과 장고 중에 고민하고 있는데 스프링은 학교 수업에서 자바를 수강해서 자바 언어 자체에는 완전하지는 않지만 조금 익숙한 상태이고 파이썬은 한번도 사용한 적이 없습니다. 이러한 상황에서는 어떤 프레임워크를 선택하고 공부를 하는것이 좋을까요? 또한 백엔드를 입문하는 단계에서 어떻게 해야 할 지 조언해주시면 감사하겠습니다!!
답변
제가 대학생때 했던 고민과 같네요:) 저도 학부시절 동안 프론트엔드와 네이티브를 경험해보고 백엔드로 진로를 결정했었는데, 그 과정에서 그럼 언어와, 이에 따라 달라지는 프레임워크는 어떤 장단점으로 구분해서 바라보고 어느 걸 선택해야 더 좋은 결과를 얻을까 고민했었어요! 결론부터 말하면 “하고싶은 걸로”입니다 ㅎ 저는 취업을 위해 코딩테스트를 준비하면서 파이썬에 익숙해져서 장고로 공부를 시작했고, 지금은 스프링을 사용해서 일하고 있어요. 지금 생각해보면 이렇게 달라진 이유는 숲을 볼 능력이 없어서 그랬던 것 같아요. 나무에만 초집중을 했던 거죠..ㅎㅎ 백엔드 엔지니어라는 것을 스스로 어떻게 정의하고 계신가요? 보통 프론트엔드와 대조하면서 “반대의 일”을 하는 정도로만 아는 경우가 있습니다. 프론트엔드 개발자도 마찬가지겠지만, 백엔드 개발자는 “현실의 문제 해결을 위한 모든 것”을 합니다. 단순히 CRUD 동작을 하는 Api를 서빙하는 일로 끝나지 않고 그 안에서 더 빠르게, 더 안전하게, 더 가용성있게 구현할 방법을 떠올립니다. 때문에 아키텍처와 디자인 패턴 및 알고리즘 등이 사용되고 학부때는 경험이 없던(할거라고 생각도 못했던) 메시지 큐를 배워서 도입하기도 하고, 알려진 SSO 인증 구현 방식을 뜯어보며 어떻게 사내 서비스에 적용할지 고민하기도 하죠. 이런 무수히 많은 나무들을 겪다보면 어느새 숲이 보입니다. 그리고 프레임워크, 그리고 언어라는 것은 개발자 입장에서 도구일 뿐이라는 걸 알게됩니다. 결국엔 내가 글을 쓰기로 했는데 연필로 쓸까 볼펜으로 쓸까 고민하는 것에 불과해요. 우선, 익숙한 것으로 글을 쓰세요. “일단 시작하라”는 말은 IT업계에서 특히 어울리는 표현이에요. 컴퓨터 하나만 있으면 어디서든 시작할 수 있는 업계에서 사소한 고민은 사치입니다. ㅎㅎ 스프링을 더 많이 쓴다던가, 파이썬이 다양하게 쓰인다던가, 이런 조언은 무의미합니다. 우리는 문제해결을 하는 사람들이고 그 도구는 상황에 맞는 적절한 것을 선택합니다. 어느 하나를 정해두고 일을 시작해도 언젠가 내가 선택한 것이 레거시가 될 때, 다시 새로운 공부를 시작하게 될 겁니다. 개발에는 끝이 없고 만병통치약과 같은 하나의 완벽한 해답은 없습니다 :)
Django 신입 개발자며, 현재 공고올라온 회사에 거의 지원했지만 좋은 소식이 없네요,,, 좁은 프레임워크의 시장이 문제인지... Js로 넘어가야할지 고민입니다
답변
저는 최근에 세번째 회사로 이직을 했고 지금까지 모두 django를 메인으로 사용하는 회사들만 다녔습니다! 먼저 django가 시장이 좁다는 점도 어느정도 공감합니다! 실제로 java/spring, node 사용하는 회사들이 훨씬 많으니까요! 다만 현재 스타트업 시장이 조금 힘들어진 점(투자등 여러가지 상황으로)도 영향이 있을 것 같습니다. 그럼에도 불구하고 원티드에 python, django로 검색하시면 꽤 회사들이 나오는걸로 알고 있어요. 일단은 지원하신 회사들에서 서류전형 자체에서 통과 못하신거면 본인의 이력서를 한번더 검토 해보시길 바래요. 그리고 스타트업-중견-대기업 모두 지원해보시면서 서류통과가 가능 했던 회사들에서 면접까지 가보세요! 가고싶지 않은 회사라도 있어도 일단 서류가 통과하나 지원은 해보시면 좋을 것 같아요. 만약 계속 1차 허들인 서류에서 통과가 안된다면 본인의 이력서가 채용담당자 혹은 현직자 입장에서 매력적이지 않을수도 있을 것 같습니다. 본인의 경험과 능력을 시장에 좀더 잘 어필할 수 있도록 이력서를 수정하셔야 할 것 같아요! (이건 이력서 자체의 문제일수도 있고 포트폴리오나 기술 블로그 등 여러 이유가 있을 수 있습니다) 이력서에 있는 본인의 경험과 포트폴리오가 다른 지원자들에 비해 집중되는 포인트가 있거나 그런 경험들이 회사에서 어떻게 기여할 수 있는지 등 본인만의 강점과 차별점이 확실히 보여야 하는것 같아요. 또 한가지 방법으로는 굳이 django 쓰는 회사가 아니더라도 지원해보시는 겁니다. 그래서 면접까지 간다면 이력서가 문제인지 면접과정에서 내 경험과 자질이 부족했던 건지 확인을 할 수 도 있을것 같아요. 어쨌든 결과적으로 1차 허들인 서류에서 합격을 해야 면접을 갈 수 있기 때문에 주변에 친구들, 개발자 혹은 채용담당자에게 직접 연락해보는 것도 해보시면 좋을것 같습니다. 제가 참고했던 이력서 작성법 링크 첨부드립니다. https://wonny.space/writing/work/engineer-resume
현재 학교에서는 파이썬만 배우고있는데 백엔드 쪽으로 진로를 희망하고있습니다. 자바는 학원 다니면서 잠깐 배웠었는데 후에 유튜브나 강의 들으면서 독학중이긴합니다. 곧 막학년이라 장고랑 스프링부트 중 어떤걸 파고드는게 좋을지 막막해서 질문 올려요ㅠㅠ 보통 회사에서는 자바를 더 많이 쓰고있는것으로 알고있는데 스프링부트를 파고드는게 진로에 더 좋을까요? 언어는 둘다 재밌어서 더 고민이 됩니다ㅠ
답변
현실적으로는 취업시장의 범위로나 성능으로나 스프링을 추천드리고 싶네요! 물론 장고도 훌륭하지만, 국내 기업에선 장고를 사용하는 기업보다 스프링을 사용하는 기업이 압도적으로 많습니다. 다만, 제 추천으로는 조금 다른 방향성을 알려드리고 싶네요. 백엔드 프로그래머는 프레임워크에 집중하기보단 아키텍처 설계, 데이터 처리, 분산 서비스 등 ‘프레임워크’ 보다는 더 근본적인것을 공부하고 이해해야 합니다. 어차피 프레임워크를 하나 잡아 공부하시다 보면 모두 접근하겠지만, 기초적이고 근본적인 부분들을 먼저 쌓아 나간다면 장고나 스프링 둘 다 아주 쉽게 다루는 개발자가 되어있으실 겁니다 ㅎㅎ 실제로 저는 현 실무에서 스프링과 장고를 모두 사용하고 있습니다! 메인으론 스프링을 이용해 REST API를 제작하고, 템플릿 뷰가 필요한 환경(주로 관리자 페이지나 BI페이지)는 Svelte(프런트 프레임워크)+장고를 많이 활용합니다 ㅎㅎ 이걸 말씀드리는 이유는, 프레임워크는 하나의 도구라고 생각하셔야 한다는걸 말씀드리는거에요. 그림그리는데 붓이 뭐가 더 좋고 잘나가는지 보단 화가의 역량이 더 중요하겠죠?
지금 가입하면 모든 질문의 답변을 볼 수 있어요!
현직자들의 명쾌한 답변을 얻을 수 있어요.
이미 회원이신가요?
지금 가입하면 모든 질문의 답변을 볼 수 있어요!