ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [IT 개발자와 일할 때 필요한 모든 개발 지식] - 후편
    강연 후기 2020. 6. 18. 23:08

    4. 서버 & 클라우드 개발의 큰 맥락 이해하기

     

    백엔드의 정의

    서버 (데이터를 저장 혹은 제공) + 클라우드(서버들을 실행하고 관리)

     

    Tip] 조그만 서비스라도 서버가 많을 수도 있다. 서버마다 역할과 장단점이 다르기 때문이다.

     

     

     

     

    서비스에 쓰이는 대표적인 서버들

    데이터베이스 서버 : 말 그대로 데이터를 쌓는 서버 (웹에서 정보를 제공)

     

    WAS 서버(=API서버) :  데이터베이스 서버는 회사에 중요한 서버이기 때문에, 프론트엔드에 해당 데이터를 WAS 서버를 거쳐서 가져오게 된다. (데이터 가공)

     

    스토리지 서버 :  이미지, 음악, 동영상, PDF 같은 파일들을 가진 서버 (데이터베이스에는 성능저하의 문제로 텍스트 위주/ 핵심적인 내용들을 많이 사용 = 용량이 큰 파일들은 사용 안함)

     

     

     

     

     

    어디서 WAS가 개입되어야할까?

    바뀌지 않아도 되는 정보는 필요없지만, 바뀌는 정보는 사용해야한다.

     

     

     

     

     

     


     

     

    클라우드의 부상

    과거에는 각각의 서버용 컴퓨터를 사용했지만, 요즘에는 클라우드를 사용한다.

     

     

     

    클라우드의 역할

     

     

    클라우드를 사용하게 되면서 하나의 컴퓨터(실제 컴퓨터가 아니라, 가상의 공간을 의미)에서 여러 서버 프로그램을 실행할 수 있게 되었다.  

     

     

     

     


     

     

     

    5. 개발자 관점에서 IT 제품 개발 프로세스 파악하기

     

    01. 프로덕트 개발 - 기획 회의

     

     

     

     

     

     

    02. 프로덕트 개발 - 개발1

     

     

    03. 프로덕트 개발 - 개발2

     

    04. 프로덕트 개발 - 개발3

     

    05. 프로덕트 개발 - 테스트 코드 작성

     

    *테스트 코드 : 코드로 미리 테스트 하는 것 (실제로 생각대로 잘 작동하는가?)

     

     

     

     

    06. 프로덕트 개발 - 코드 관리

    서비스를 위한 모든 코드가 있는 저장소가 있다. 코드를 작성한 후에 저장소에 올려야하는데, 여러 개발자들이 동시에 개발하게 되면 내가 짠 코드가 잘 작성된 것인지 다른 개발자들과 리뷰를 한 후, 충돌이 있다면 해결하는 과정을 거치고 저장소에 올리는 게 좋다.

     

    Tip] CI (Continuous Intergration)은 내가 짠 코드가 잘 합쳐진 후 빌드 & 테스트까지 자동화 된 것 (예시: Circle CI)

     

     

    07. 프로덕트 개발 - QA

    기획자나 디자이너가 프로젝트 코드 바탕으로 실제 앱을 실행해보면 문제가 있는 지 없는 지 확인하는 작업 (문제점 반복적으로 수정)

     

    08. 프로덕트 개발 - 배포

    실제로 사용자들의 리퀘스트가 들어오는 운영환경에 올리는 것.

     

    Tip] CD (Dontinuous Deployment) 내가 짠 코드들이 운영 환경에서 실행되기까지 자동화하는 것

    >> 옛날에는 직접 운영환경 컴퓨터로 접속을 해서 소스코드를 입력해 실행하는 과정을 거쳤지만, 지금은 바로 코드 몇줄로 자동화가 된다

     

     

    09. 프로덕트 개발 - 배포 후

    [내용을 놓쳐서 추후에 보충예정입니다.]

     

    Tip] DevOps 직군 (해당 직군이 없으면 대부분 백엔드 개발자가 대신 한다.)

    개발환경, 운영환경을 관리해주는 것 (개발자들은 개발에 집중하게 만들어 주는 것)

     

     

     

     


     

     

     

    6. 개발자와 커뮤니케이션 수월하게 하기

     

    커뮤니케이션 용어 정리하기

    모델링: 데이터베이스 및 테이블 설계

    더미 데이터: 가짜 데이터

     

     

     

    디버깅: 개발환경에서 문제점을 찾는 행위

    레거시 코드 : 현재 트렌드에 맞지 않는 예전 코드 (동작은 함 / 항상 시간이 지나면 이전 코드들은 레거시 코드가 됨)

    리팩토링: 코드를 더 나은 코드로 바꾸는 행위

     

     

     

     

    상황별 커뮤니케이션 예시 1 - BAD&GOOD

    일련의 과정들을 쪼개서 상황별 시간을 파악하는 것이 좋다.

     

     

    개발자와 커뮤니케이션 사례

     

     

     

    개발자가 안된다고 하는 이유

    1. 소스코드가 많아질수록 관계가 복잡해진다.

    즉, 한줄을 짜더라도 고민(어디에 어떻게 짜야할지) 하게 된다.

    2. 최종적으로 배포되기까지의 신경쓸 것들이 많다.

    3. 기존에 짰던 코드가 오류가 나서 고쳐야한다.

     

    효율적인 정보전달을 위한 TIP

    설계 그리고 전체적인 프로세스를 꼭 이해해라. (IT 전반에 대한 호기심 - 정보들을 채워나가는 게 중요)

     

     

     

     

    사전질문 답변

     

    01. 개발자를 시작하기 좋은 나이가 있다고 생각하시는지?

    - 어릴수록 좋습니다.

     

    02. 개발자의 실력 구분법?

    - 개인적인 의견으로, 개발 실력자는 크게 두가지로 나눠집니다. 첫째는 기술적으로 코드를 잘짜는 사람이고, 둘째는 커뮤니케이션이 원활해 비즈니스에 코드를 잘 녹여내는 사람이라고 생각합니다. 이 두 가지를 잘 하는 사람이 실력 좋은 개발자라고 생각합니다.

     

    03. 스타트업에서 PO나 기획분야 신입으로 가기 위해선 코딩 공부가 필수적이라고 생각해서 시작해보려고 하는 데 어디서부터 시작해보면 될까요?

    - 기획을 하게 되면 코딩 공부는 필수적이라고 생각합니다. 저라면 하나의 IT 서비스가 어떻게 구현되는지 직접 코딩을 하거나 정리를 먼저 시작할 것 같습니다. 

     

    04. 풀스택 개발자는 누구인가?

    - 백엔드 + 프론트 + 앱 전부할 수 있는 사람 / 허상이라고 말하는 사람도 있는데, 깊이 없이 이것저것 하는 느낌이기 때문입니다.

     

    05. 개발자가 프로덕트 매니저에게 가장 기대하는 점은 무엇인가요? 가장 잘해줬으면 하는 업무 또는 업무 스킬셋은 무엇일까요?

    - 사실 가장 중요한건 개발의 이유를 납득이 되게 설명할 수 있는 게 중요하다고 생각합니다. 앞에서 설명한 커뮤니케이션 예시를 살펴보면 될 것 같습니다. 또한, 개발자들이 무슨 일을 하는 지 알고 테스트 관리를 해서 시간 조절을 잘 해주면 좋을 것 같습니다. 

     

    댓글 0

Designed by Tistory.