70. 회사일/79. 잡다구리

[DEV] CDN 퍼지 주소가 일몰로 신규 주소 변경 : 생소한 단어들의 향연

Wooris 2022. 12. 26. 16:12

[REQ]

  • CDN 퍼지 주소가 일몰로 신규 주소 변경 : 생소한 단어들의 향연

[요청내용]

  • CDN 퍼지 주소가 바뀌어서 새로운 신규 주소로 변경을 해야한다.
    • 기한 : 2022.12.29일까지
    •  - 개인일정 : 2022.12.22까지 무조건 다 한다.

(29일까지면 연말이고 휴가때문에 도움받거나 반영하거나 오류가 생기면 Risk가 너무 크다)
 

[작업순서]

  • 내용이해
  • 소스분석
  • 사용처분석
  • 교체작업 1개
  • 교체됬는지 Test
  • 나머지것 들도 교체
  • 전부 다 Test
  • 전략패턴이든 추상화든 리팩토링  

 

[업무용어이해]

  • CDN(Content Diliverty Network)
      : 분산되어 있는 서버 네트워크를 이용하여 용량 큰 리소스를 사용자가 빠르게 받기 위한 Network 기술
      : 일반적으로 Cashe Server에 콘텐츠를 저장후 요청을 받으면 가까운 캐시 서버에서 응답을 보내준다.
  • 퍼지(Purge)
      : (CDN)캐시를 리프레시 하여 원래 리소스와 캐시서버의 리소스를 동기화하는 작업
      
    참고 : https://velog.io/@sryung1225/%EC%97%85%EB%AC%B4-%EC%A4%91-%EB%82%AF%EC%84%A0-%EC%9A%A9%EC%96%B4-%EC%A0%95%EB%A6%AC
  • 일몰
       : 일몰시하다 日沒時-- 
       : 자동사 기한이 다 되어 끝나다. (=일진하다)
  • 즉, 내가 해야하는 일 : 소스에 URL(퍼지하는) 바꾸기
    • 인줄 알았으나....API쓰는 방법 자체를 바꿔야 하는 구나
       

[분석내용]

  • 1. AS-IS 와 TO-BE 방법의 차이
    • AS-IS : ID만 사용 GET방식 단건 호출
    • TO-BE : ID와 KEY를 POST방식 List 호출
  • 2. 사용처
    • 어지럽다 ...내일 다시...  안스
    • [주의할 점]
      • 야누스 PROJECT의 AWS S3 분기처리에 속아 길을 잃지 않게 하기
      • GS Fresh 분기처리에 속아 길을 잃지 않기

[지원받아야 할부분]

  • 기존방식 문서 받기

[WorkLog]

  • 85. 내가 어렵게 개발하려고 했던 이유들
    • 시간이 많이 남아서 Generic type의 interface로 만들어보고 싶어서
    • 나중에 쓸일이 있을까 싶어서
    • TestCode를 작성 및 Test에 용이해서
    • OOP 특징을 살리고 싶어서
  • 90. 시험 삼아 만들었지만, 옆에 황M이 현재 개발하는 중인 내용과 겹치고 진행도 많이 되어있어서 삭제 결정!
    • Image Path하나 가져오는 데 너무 오버스펙이다.
      • 2시간 정도 낭비! => 소중한 것을 Flex할때 느끼는 행복!!
      • 황M 개발 완료 시 까지 일단 하드코딩으로 가자!
  • 91. 그래도 아쉬워서 만든 것들 기록으로 남기기
    • 86. Diagram
      • (회사PC에서 이미지 안올라감ㅋ)
    • 87. Source
      • ImagePathGenerator.java
      • 1
        2
        3
        public interface ImagePathGenerator<T1> {
            public T1 getImagePath(T1 stringParam);
        }
         
         
      • PlanPrdRepImagePath.java 

      • 1
        2
        3
        4
        5
        6
        7
        public class PlanPrdRepImagePath implements ImagePathGenerator<String>{
            private static final String IMAGE_SERVER_URL = MessageSourceUtils.getConfigMessage("xxxxxxxx");
            @Override
            public String getImagePath(String planPrdCD) {
                return IMAGE_SERVER_URL+"Image path rule"
            }
        }
        cs
      •  사용
      • 1
        2
        3
        4
        5
        6
        7
        8
        9
        10
           List<String> imageUrlList = new ArrayList<>();
           ImagePathGenerator<String> planPrdRepImagePath = new PlanPrdRepImagePath();
           
           String tempPlanPrdRepImagePath; 
           for (PlanPrdSectPrd planPrdSectPrd : planPrdSectPrdList ) {
              tempPlanPrdRepImagePath = planPrdRepImagePath.getImagePath(String.valueOf(planPrdSectPrd.getPrdCd()));
              imageUrlList.add(tempPlanPrdRepImagePath);
           }
         
         
        cs
  • 92. Post API 동작 안됨
    • Cloud 환경에서 403에러
    • 개인PC에서   문서에서는 Erro code Return
    • 용M 지원요청
      - 직접 컨택하지 않겠다
       - API동작하는 지 부터 Test해보고 개발 시작했어야 했는데 시간이 좀 뜨네
              
  • 93. 다 만들어버렸다.
    • 갑자기 귀찮아져서 막~ 생각하고 막~ 만들고 막히는 부분 그때 그때 찾아서 막 붙여 넣다 보니까 다 만들어 버렸다. 
  • [결과적으로]
    • CDN 퍼지라는 것이 많이 필요할 거 같아서 이곳저곳에 있을 걸로 예상했다
      - But, 대부분 싱크가 맞는다. 싱크가 안 맞는 일부 경우에만 퍼지를 해주면 된다.
      - 즉 고칠 부분이 별로 없다.
    • 개발 이미지 서버는 대상이 아니라 로컬 및 개발에서는 테스트가 불가했다.
    • 클라우드 (로컬)에서 CDN  Purge 호출이 불가했다.
      • 그렇다고 최소한의 테스트도 없이 올릴 수는 없었다.
    • 파일의 경로를 입력받아 수동으로 CDN Purge하는 API를 따로 만든 후 개발에 올렸다.
      •  개발서버에서 운영의 이미지 서버의 파일이 CDN Purge를 테스트 하였다.

[마치며]
1. 일의 순서가 중요

  • API가 안된다는 걸 먼저 확인한 후 요청한다음에 개발을 시작했어야 했다.
    • 클라우드환경 문제, 이미지서버 대상 문제
  • 공부를 위한 억지 개발은 환영받지 못한다.
    • 협업이 중요하니까 이렇게 하면 구조적으로 맞지만, 생산성에 도움이 되지 않는 것은 하지 않는 편이 낫다.
  • TDD를 배울때 작은 부분도 테스트 코드 구현을 하며 개발을 했는데 그 작은 부분들이 어떻게 보면 의미없는 테스트를 하고 있는 건 아닐까 하는 생각이 든다.
  • 개발중 구글링으로 해결했던 부분은 카테고리별로 나눠서  Upload예정